有效地保存唯一值

时间:2012-11-21 15:42:50

标签: java jpa unique

我正在使用带有JPA的Java EE开发Web应用程序。现在我遇到了一些我需要为一个实例保存的值。例如:网络应用程序的名称,税号,联系方式。其中一些值可以由CMS更改。

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

  • 实体对象:我为此创建一个对象感觉不对,将其保存为实体。这样它就会创建一个只有一个条目的表。我也需要制作一个DAO来访问它。
  • 属性文件:运行新版本的WAR后,我不想丢失任何更改。其次,我认为可能有比编辑属性文件更好的解决方案。
  • Applicationscoped bean:我不希望因任何原因重启应用程序时丢失数据。

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

感谢您的投入!

1 个答案:

答案 0 :(得分:0)

我不确定您的应用程序的具体内容是否能够确定最佳,但我对何时使用何种类型的设置存储的想法是:

  • 数据库(设置表) - 真正蓬勃发展的地方是,您将拥有的值将独立于您的源所发生的变化,值是特定于环境的,或者您不希望在您的文件系统上乱搞的人将是更改值(例如,是否在环境中启用了功能,与某些类型的请求进行通信的服务器)
  • 属性文件 - 适用于在群集中基于每台计算机设置的数据(虽然我建议标准化群集中的所有内容),或者当您的CMS将成为主要(仅限?)的方式时设置属性,您将在每次安装时替换文件
  • 应用程序bean - 应用程序启动时需要设置(例如,要启动的数字bean或数据库连接字符串)
  • 在代码中 - 永远不会更改该值...(例如,应用程序名称)

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

为了便于更改值,我相信将其存储在数据库中是最简单的方法(假设您没有经常在很多不同的环境中更改它),因为您可以在应用程序更改时更改它生活,让它快速生效。如果您在文件系统上的文件中拥有该属性,则需要一种方法强制您的应用程序在其运行时重新读取该属性,或者您必须退回应用程序以更改该属性。如果你在代码中拥有它,你必须重新构建你的构建以实现属性(显然)。