Hibernate如何实现动态数据结构

标签 hibernate data-structures orm

我有这么庞大的数据结构 - 我想避免为每种类型指定类......
使用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/

相关文章:

java - 获取异常 - java.lang.IllegalStateException : A JTA EntityManager cannot use getTransaction()

java - 表之间以什么关系存储投票

java - 如何映射名称为JPA中保留字的实体字段

c++ - 寻求概率分布数据表示的建议

c++ - 使用 STL 的列表对象创建 Stack

database-design - 使用O/R映射时应从哪里开始设计?对象还是数据库表?

python - 切片后订购 Django QuerySet

java - Micronaut MySQL删除记录org.hibernate.HibernateException : No Session found for current thread

hibernate - 带有 Java 8 Stream NonUniqueResultException 的 Spring DATA JPA

c - 回收动态内存是什么意思?