gpt4 book ai didi

java - 你把你的字典数据放在哪里?

转载 作者:搜寻专家 更新时间:2023-11-01 01:59:06 26 4
gpt4 key购买 nike

假设我的应用程序中有一组国家/地区。我希望这些数据会发生变化,但不会经常发生变化。换句话说,我不会将此集合视为操作数据(例如,我不会为 Country 提供 CRUD 操作)。

也就是说我必须将这些数据存储在某个地方。我看到有两种方法可以做到这一点:

  • 数据库驱动。创建并填充 Country 表。提供某种 DAO 来访问它(findById()?)。这样,客户端代码就必须知道国家的 ID(也可以是名称或 ISO 代码)。在应用程序方面,我将有一个国家类。

  • 应用驱动。创建一个枚举,我可以在其中列出我的系统已知的所有国家/地区。它也将存储在数据库中,但不同之处在于现在客户端代码不必具有查找方法(findById、findByName 等)和硬编码 Id、名称或 ISO 代码。它将直接引用特定国家/地区。

出于几个原因,我倾向于第二种解决方案。你是怎么做到的?

将此称为“字典数据”是否正确?

附录:这里的主要问题之一是,如果我有一个像 findByName("Czechoslovakia") 这样的查找方法,那么在 1992 年之后,这将不会返回任何内容。我不知道客户端代码将如何对此使用react(毕竟它有点期望总是返回 Country,因为,好吧,它是一个字典数据)。如果我有类似 findById(ID_CZ) 的东西,情况会变得更糟。很难找到所有这些依赖项。

如果我从我的枚举中删除 Country.Czechoslovakia,我将强制自己处理对 Czechoslovakia 的任何依赖。

最佳答案

在我处理过的一些应用程序中,数据库中只有一个“枚举”表,其中包含所有此类数据。它仅由两列组成:EnumName 和 Value,并且将像这样填充:

  • “国家”、“德国”
  • “国家”、“英国”
  • “国家”、“美国”
  • “水果”、“苹果”
  • “水果”、“香蕉”
  • “水果”、“橙子”

然后在应用程序执行开始时将其读入并缓存。优点是我们没有为每个不同的枚举类型使用几十个数据库表;如果我们需要更改数据,则无需重新编译任何内容。

这可以很容易地扩展以包含额外的列,例如指定默认排序顺序或替代 ID。

关于java - 你把你的字典数据放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com