Hibernate如何实现动态数据结构

use*_*026 5 orm hibernate data-structures

我有这个庞大的数据结构 - 我想避免为每种类型指定类...
使用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
Run Code Online (Sandbox Code Playgroud)

所以例如 -

例1:我可以添加其他类型而无需重新编译代码

     | Cow -> [one to many:vaccinations] -> [one to many:pregnancy dates]
Run Code Online (Sandbox Code Playgroud)

示例2:在实体之间创建动态链接的能力

    |   Horse -> [one to many:vaccinations] [one to many:Horse breeding]
            LinkToOwner->   [one to one: owner]
Run Code Online (Sandbox Code Playgroud)

Ang*_*ity 4

Hibernate动态映射是针对此用例的推荐解决方案。通过动态 Hibernate 映射,所有内容都会映射到 Java 映射中,其中键是字符串,值是 String、Integer 等类型或其他映射。

因此,在您的示例中,您将获得一个包含两个条目的地图,其中键为“鸟类”和“哺乳动物”,它们本身就是地图。

哺乳动物值将是一个包含 3 个条目“狗”、“猫”和“马”的地图。“Cat”值将是一个包含两个条目的地图:“疫苗接种”和“访问记录”等。

动态映射可以与更常用的静态映射一起使用。

动态映射不是 Hibernate 最常用的功能,但它们长期以来都很稳定,并且是专门针对此用例而设计的。