有效地保存唯一值



我正在使用Java EE和JPA开发一个Web应用程序。现在,我遇到了一些需要保存的值。例如:网络应用程序的名称、税号、联系人数据。CMS可以更改其中一些值。

保存这些数据的有效方法是什么?

  • 实体对象:我觉得为它创建一个对象并将其保存为实体是不对的。通过这种方式,它将创建一个只有一个条目的表。我也需要创建一个DAO来访问它
  • 属性文件:我不想在运行新版本的WAR后丢失任何更改。其次,我认为可能有一个比编辑属性文件更好的解决方案
  • Applicationscoped bean:无论出于何种原因,我都不希望在重新启动应用程序时丢失我的数据

还有其他更有效的方法来处理这样的值吗?或者我应该使用其中一种方式,如果是,为什么?

感谢您的投入!

我对您的应用程序的细节不太确定,无法确定哪种是最好的,但我对何时使用什么类型的设置存储的想法是:

  • 数据库(设置表
  • 属性文件-当您有数据将在集群中以每台机器为基础进行设置时(尽管我建议将集群中的所有内容标准化),或者当您的CMS将是设置属性的主要(唯一?)方式,并且您将在每次安装时替换文件时,都很好
  • Applicationbean-应用程序启动时需要设置(例如要旋转的bean数或数据库连接字符串)
  • 在代码中-值永远不会更改。。。ever(例如应用程序名称)

存储设置最有效的方法是直接在代码中,但它太不灵活了,在大多数情况下都不值得。将属性存储在文件系统上与存储在数据库中大致相同,假设您有数据库缓存,并且每次获取属性时都从数据库中读取。如果你没有缓存,那么每次访问属性时,你都要付出磁盘读取的代价,因为属性文件将在读取后将值存储在内存中。

为了便于更改值,我认为将其存储在数据库中是更改它的最简单方法(假设您不经常在许多不同的环境中更改它),因为您可以在应用程序运行时更改它,并使其快速生效。如果您在文件系统上的文件中有该属性,您需要一种方法来强制应用程序在运行时重新读取该属性,或者您必须重新启动应用程序才能更改该属性。如果你在代码中有它,你必须重新编译你的构建来影响属性(显然)。

最新更新