基于此,我需要将这些数据存储在某个地方。我看到两种方法可以实现:
1. 数据库驱动。创建并填充一个Country表,提供某种类型的DAO进行访问(例如findById())。这样客户端代码将必须知道国家的ID(这也可以是名称或ISO代码)。在应用程序侧,我将拥有一个Country类。
2. 应用程序驱动。创建一个枚举,在其中列出系统已知的所有国家。它也将存储在数据库中,但是区别在于现在客户端代码不需要查询方法(findById、findByName等)并硬编码ID、名称或ISO代码。它将直接引用特定的国家。
我倾向于第二种解决方案,原因有几个。您如何做到这一点?
这样称呼它为“字典数据”是否正确?
附加说明:这里的主要问题之一是,如果我有一个查找方法,例如findByName(“捷克斯洛伐克”),那么在1992年之后这将返回空值。我不知道客户端代码会如何反应(毕竟它会期望永远都能得到国家数据,因为这是一个字典数据)。如果有类似findById(ID_CZ)的操作,则情况会更糟。找到所有这些依赖关系将非常困难。
如果我从枚举中删除Country.Czechoslovakia,我将强制自己处理任何对Czechoslovakia的依赖关系。