某种数据持久性

时间:2009-09-21 15:44:47

标签: java database persistence

基本上我需要知道的是:

我必须向用户显示国家/地区的下拉列表,每个国家/地区也都有与之关联的代码。我将不得不与国家和代码一起工作什么是最好的方法:

-We(开发人员)正在考虑使用此数据或XML文件在我们的app数据库中的表。 - 我们的“建筑师”说这是旧学校,我们应该在我们的应用程序中使用常量,并将国家与代码相关联的地图

请帮助我感觉很聪明

6 个答案:

答案 0 :(得分:2)

我同意你的意见,你不应该硬编码或使用常量。根据您的需求,有一些不错的选择:

  • Java属性文件 - 如果您只需要存储一些键值对,这些是最简单的方法并且易于使用。

  • XML存储 - 如果您正在寻找持久性并且正在考虑使用XML进行存储,我建议您查看JAXB。它是Java 6的一部分,它将使您的生活比尝试使用DOM更容易。

  • 数据库持久性 - 如果您有更多经常更改的数据,您还可以查看将其存储在数据库中。 JPA是一个很好的标准库。这对你正在寻找的东西来说可能有些过分。

底线硬编码已成为过去。有许多很好的方法可以快速轻松地获取数据,而无需对所有内容进行硬编码。

答案 1 :(得分:1)

国家很少改变,因此静态添加它们作为代码或配置文件似乎是合理的。如果您不将数据库用于其他任何目的,请不要仅为此功能添加数据库。

如果您已在应用中使用XML解析,请使用XML文件定义数据。它已经解决了所有类型的问题(例如,如果你需要为每个国家/地区添加第二个属性)。

如果您不将XML用于其他任何目的,我建议您尝试一下。它不会给你的应用增加太多。否则,请使用纯文本文件,也可以是CSV文件。

答案 2 :(得分:1)

不同的方法有不同的优点和缺点:

<强>数据库:

  • 允许您在查询中使用国家/地区数据
  • 可以在不重新部署应用程序的情况下更改数据
  • 编辑数据需要您编写某种前端或通过某些通用SQL浏览器手动执行
  • 需要数据库访问代码和某种缓存策略
  • 代码中的任何基于国家/地区的逻辑都可能在数据库更改时中断,或者必须反映在数据库中

<强> XML:

  • 非常容易编辑
  • 可以在不重新编译应用程序的情况下进行更改,但必须以某种方式部署更改
  • 需要解析代码和某种缓存策略
  • 代码中的任何基于国家/地区的逻辑都可能在XML更改时中断,或者必须反映在XML中

<强>代码:

  • 易于编辑 - 面向开发人员
  • 更改需要编译和部署
  • 不需要额外的技术层
  • 代码和国家/地区数据不能不同步

总而言之,如果您接受每个更改的编译和部署步骤,那么“代码作为数据”解决方案确实是最好的。其他解决方案创建了结构(甚至是逻辑)的开销和重复 - 不,它们不会神奇地使得“最安全”做最后一分钟的更改“因为它不是代码”。代码是数据,数据是代码。

答案 3 :(得分:0)

简而言之,你的建筑师是错的(或者至少他是在你的位置是否准确的解释)。它不应该在代码中。

此数据不是静态的;一个国家的名称发生变化,一个新的名称成立,或者一些不再存在。

就什么机制而言,它并不一定重要。只需确保您可以轻松检索数据,您有单元测试,并且有直接的机制来更新数据。

答案 4 :(得分:0)

我认为“表格解决方案”有更灵活的方法: 1.您可以管理数据和连接属性 你可以直接使用表格 3.您可以根据db表创建关联映射))

答案 5 :(得分:0)

我肯定不会在代码中将它们用作常量。 名称可以更改,而国家/地区可以创建,合并,消失等。

如果您已经在使用数据库,添加它可能有意义。首先,它确保可能与客户数据一起存储的代码在您的国家/地区代码列表中有效。因此,如果一个国家消失但客户记录仍然引用它,则数据保持有效。

确保您的UI加载并缓存列表;如果可以避免,那么每次都不要进行查询。

顺便说一句,在国际化应用程序中正确处理国家比处理重命名要复杂得多。例如,如果一个国家或一个国家的一部分宣布独立,一些国家将承认它,而另一些国家则不承认。