我有这么庞大的数据结构 - 我想避免为每种类型指定类......
使用hibernate,这个结构是否可以以这样的方式实现:当添加新物种或外键时 - 不需要重新编译?
Animal
|
Birds
| Parakeet
| Love Bird -> [one to many:visit record]
| Budgerigar -> [one to many:visit record]
Mammals
| Dog -> [one to many:vaccinations] [one to many:visit record] [one to many:Haircuts]
| Cat -> [one to many:vaccinations] [one to many:visit record]
| Horse -> [one to many:vaccinations] [one to many:Horse breeding]
Tree is about 100+ types of animals
例如 -
示例1:我可以添加其他类型而无需重新编译代码
| Cow -> [one to many:vaccinations] -> [one to many:pregnancy dates]
示例2:在实体之间创建动态链接的能力
| Horse -> [one to many:vaccinations] [one to many:Horse breeding]
LinkToOwner-> [one to one: owner]
最佳答案
hibernate Dynamic mappings是针对此用例的推荐解决方案。通过动态 Hibernate 映射,所有内容都会映射到 Java 映射中,其中键是字符串,值是 String、Integer 等类型或其他映射。
因此,在您的示例中,您将获得一个包含两个条目的 map ,其中键为“Birds”和“Mammals”,它们本身就是 map 。
哺乳动物值将是一个包含 3 个条目“狗”、“猫”和“马”的 map 。 “Cat”值将是一个包含两个条目的 map :“疫苗接种”和“访问记录”等。
动态映射可以与更常用的静态映射一起使用。
动态映射不是 Hibernate 最常用的功能,但它们长期以来都很稳定,并且是专门针对此用例而设计的。
关于Hibernate如何实现动态数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415638/