最近,我一直在学习Hibernate,我面临着一些困难。我的第一个问题是:我对以下术语感到非常困惑。
因为,据我所知,在rdbms中,我们首先需要在父表中插入。然后我们可以在子表上插入,所以唯一可能的情况是一对多(首先是父级,然后是子级)。那么,“多对一”是如何发挥作用的?第二,关于Hibernate的双向映射是什么?具体来说,不同类型的联接注释让我很困惑。我在下面列出这些注释。
1.@JoinTable(name = "Tbale_Name", joinColumns = { @JoinColumn(name = "Column_Name") },
inverseJoinColumns = { @JoinColumn(name = "Another_ColumnName") })
2.@OneToMany(mappedBy="department")` this mappedby term
3.@PrimaryKeyJoinColumn请帮助我理解这些概念。
发布于 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。
https://stackoverflow.com/questions/19412461
复制相似问题