首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate注释混淆

问Hibernate注释混淆
EN

Stack Overflow用户
提问于 2013-10-16 19:49:39
回答 1查看 325关注 0票数 0

最近,我一直在学习Hibernate,我面临着一些困难。我的第一个问题是:我对以下术语感到非常困惑。

  1. 双向映射
  2. 多对一

因为,据我所知,在rdbms中,我们首先需要在父表中插入。然后我们可以在子表上插入,所以唯一可能的情况是一对多(首先是父级,然后是子级)。那么,“多对一”是如何发挥作用的?第二,关于Hibernate的双向映射是什么?具体来说,不同类型的联接注释让我很困惑。我在下面列出这些注释。

代码语言:javascript
复制
1.@JoinTable(name = "Tbale_Name", joinColumns = { @JoinColumn(name = "Column_Name") }, 
    inverseJoinColumns = { @JoinColumn(name = "Another_ColumnName") })

2.@OneToMany(mappedBy="department")` this mappedby term 

3.@PrimaryKeyJoinColumn

请帮助我理解这些概念。

EN

回答 1

Stack Overflow用户

发布于 2013-10-16 21:53:44

我要说的第一件事是,不要从表的角度来思考,而是从对象的角度来思考。

您试图用注释表达的是对象之间的关系,让hibernate知道如何持久化数据。您显然可以手动检查SQL,但使用ORM的想法是相应地映射实体之间的关系,并让ORM计算出生成SQL等方面的复杂性。

值得注意的是,通过将->添加到关系的非拥有(子)端,可以使用@ManyToOne映射父mappedBy子关系。然后Hibernate将决定先将哪些实体插入数据库。使用TransactionManager运行将增强多表插入的完整性。Hibernate还将解决哪些实体需要持久化,例如,如果您在多个方面添加了一个新对象到一侧的现有对象中。

此外,值得理解的是,在某些情况下,在父->子外键中生成主密钥的并不总是数据库。代码生成标识符和hibernate的可能性将根据。

双向映射意味着对象实体之间有一个引用。也就是说,您可以从第一个实体中检索第二个实体。双向映射支持一对多或多对多。即OneToMany =其中一个实体上的集合。多对多=对两个实体都有影响。

JoinTable告诉hibernate,数据库中的表可以一起映射到其他表。有关详细信息,请参阅JPA "@JoinTable" annotation。JoinColumn告诉hibernate使用哪一列在两个实体之间进行连接。Hibernate需要这些来构造SQL。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19412461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档