用hibernate实现java国家/地区表示
我正在将我的JDBC项目迁移到Hibernate。 我有一个关于数据库中存储的参考数据的问题,特别是联合国国家列表。 我从here拿的
当我使用JDBC时,我只有一个保存数据的表,我用它来验证数据库中的数据。例如,用户无法输入他居住在该表中不存在的国家/地区
现在,我有一个代表个人的Pojo,还有一个代表国家的字符串成员,我如何用Hibernate保持它,我需要为国家创建一个Pojo吗? 如何将下面的代码引用到不是pojo的“引用表”中
@OneToOne
@JoinColumn(name = "country_iso")
private String country;
上面的代码是我开始编写的,但我不知道这是否是实现它的方法
# 1 楼答案
我认为使用iso代码作为id创建一个类
Country
是一个好主意您需要建立多对一关系,因为一个国家中可能存在多人
国家:
人:
通过这种方式,您可以使用Hibernate将所有国家作为一个集合加载,并且可以为关系设置规则(如optional=false等)
# 2 楼答案
我建议您为国家创建一个实体,如
通过此映射,您可以将国家pojo映射到表国家,还可以将此实体设置为不可变并启用2L缓存(这是使用只读策略启用2L缓存的最佳情况)
# 3 楼答案
在这种情况下,您可以遵循以下方法。我假定您不会在运行时插入
Country
表在
Person
类中有一个countryId字段当您想要将
Person
保存到数据库中时,根据国家名称(从数据库中)获取countryId,并将其设置为Person
的countryId。然后保存Person
强>如果需要,您可以为
Country
创建一个POJO,并在Person
类中引用它