hibernate的关联

news/2024/7/4 1:41:34 标签: hibernate, generator, class, table, null, associations
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

1.单向关联 单向关联(Unidirectional associations) 7.2.1. 多对一(many to one) 单向many-to-one关联是最常见的单向关联关系。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <many-to-one name="address"         column="addressId"         not-null="true"/> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key, addressId bigint not null ) create table Address ( addressId bigint not null primary key )         7.2.2. 一对一(one to one) 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <many-to-one name="address"         column="addressId"         unique="true"         not-null="true"/> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key, addressId bigint not null unique ) create table Address ( addressId bigint not null primary key )         基于主键关联的单向一对一关联通常使用一个特定的id生成器。(请注意,在这个例子中我们掉换了关联的方向。)

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class>

<class name="Address">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="foreign">             <param name="property">person</param>         </class="tags" href="/tags/GENERATOR.html" title=generator>generator>     </id>     <one-to-one name="person" constrained="true"/> </class> create table Person ( personId bigint not null primary key ) create table Address ( personId bigint not null primary key )         7.2.3. 一对多(one to many) 基于外键关联的单向一对多关联是一种很少见的情况,并不推荐使用。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <set name="addresses">         <key column="personId"             not-null="true"/>         <one-to-many class="Address"/>     </set> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key ) create table Address ( addressId bigint not null primary key, personId bigint not null )         我们认为对于这种关联关系最好使用连接表。

2使用连接表的单向关联 7.3. 使用连接表的单向关联(Unidirectional associations with join tables) 7.3.1. 一对多(one to many) 基于连接表的单向一对多关联 应该优先被采用。请注意,通过指定unique="true",我们可以把多样性从多对多改变为一对多。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <set name="addresses" table="PersonAddress">         <key column="personId"/>         <many-to-many column="addressId"             unique="true"             class="Address"/>     </set> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key ) create table PersonAddress ( personId not null, addressId bigint not null primary key ) create table Address ( addressId bigint not null primary key )         7.3.2. 多对一(many to one) 基于连接表的单向多对一关联在关联关系可选的情况下应用也很普遍。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <join table="PersonAddress"         optional="true">         <key column="personId" unique="true"/>         <many-to-one name="address"             column="addressId"             not-null="true"/>     </join> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key ) create table PersonAddress ( personId bigint not null primary key, addressId bigint not null ) create table Address ( addressId bigint not null primary key )         7.3.3. 一对一(one to one) 基于连接表的单向一对一关联非常少见,但也是可行的。

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <join table="PersonAddress"         optional="true">         <key column="personId"             unique="true"/>         <many-to-one name="address"             column="addressId"             not-null="true"             unique="true"/>     </join> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key ) create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique ) create table Address ( addressId bigint not null primary key )         7.3.4. 多对多(many to many) 最后,还有 单向多对多关联.

<class name="Person">     <id name="id" column="personId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id>     <set name="addresses" table="PersonAddress">         <key column="personId"/>         <many-to-many column="addressId"             class="Address"/>     </set> </class>

<class name="Address">     <id name="id" column="addressId">         <class="tags" href="/tags/GENERATOR.html" title=generator>generator class="native"/>     </id> </class> create table Person ( personId bigint not null primary key ) create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) ) create table Address ( addressId bigint not null primary key )         3双向关联(反转)

 


http://www.niftyadmin.cn/n/1425768.html

相关文章

菜菜的深度学习笔记 | 基于Python的理论与实现(六)—>简单两层网络的实现

系列索引&#xff1a;菜菜的深度学习笔记 | 基于Python的理论与实现 文章目录一、学习算法的实现&#xff08;1&#xff09;神经网络的学习步骤&#xff08;2&#xff09;神经网络的类&#xff08;3&#xff09;mini-batch的实现&#xff08;4&#xff09;基于测试数据的评价一…

Hibernate Annotation1

1.概述 值得期待的Hibernate Annotation 式配置终于随着Hibernate 3.2GA 版本的发布而宣布正式被支持了&#xff01; 只要数据库以及字段名称设计合适&#xff0c;我们甚至只需要在原来程序上加上3行代码&#xff0c;就可以配置完成一个Bean。 这依稀看到了Rails 的影子...…

菜菜的深度学习笔记 | 基于Python的理论与实现(七)—>误差反向传播

系列索引&#xff1a;菜菜的深度学习笔记 | 基于Python的理论与实现 文章目录一、误差反向传播法&#xff08;1&#xff09;基础概念&#xff08;2&#xff09;计算图&#xff08;3&#xff09;链式法则&#xff08;4&#xff09;反向传播一、误差反向传播法 &#xff08;1&am…

菜菜的深度学习笔记 | 基于Python的理论与实现(八)—>简单层的实现

系列索引&#xff1a;菜菜的深度学习笔记 | 基于Python的理论与实现 文章目录&#xff08;1&#xff09;乘法层、加法层的实现&#xff08;2&#xff09;激活函数层的实现1.ReLU层2.Sigmoid层我们以购买苹果和橘子的例子来了解一下计算图是如何应用的 &#xff08;1&#xff0…

数据分析入门 | kaggle泰坦尼克任务(一)—>数据加载和初步观察

系列索引&#xff1a;数据分析入门 | kaggle泰坦尼克任务 文章目录一、数据加载&#xff08;1&#xff09;载入数据&#xff08;2&#xff09;逐块读取二、初步观察一、数据加载 本次主要以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作&#xff0c;完成kaggle…

Hibernate Annotation2

用EJB3注释进行映射   现在EJB3实体Bean是纯粹的POJO。实际上表达了和Hibernate持久化实体对象同样的概念。他们的映射都通过JDK5.0注释来定义(EJB3规范中的XML描述语法至今还没有定下来)。注释分为两个部分&#xff0c;分别是逻辑映射注释和物理映射注释&#xff0c;通过逻辑…

数据分析入门 | kaggle泰坦尼克任务

这个章节主要是参加DataWhale的数据分析项目过程中的记录&#xff0c;希望能对感兴趣的同学有一些帮助。 目录索引一、章节导航二、其他集合一、章节导航 数据分析入门 | kaggle泰坦尼克任务&#xff08;一&#xff09;—&#xff1e;数据加载和初步观察数据分析入门 | kaggle…

数据分析入门 | kaggle泰坦尼克任务(二)—>pandas基础

系列索引&#xff1a;数据分析入门 | kaggle泰坦尼克任务 文章目录一、pandas基础&#xff08;1&#xff09;数据类型&#xff08;2&#xff09;基本操作&#xff08;3&#xff09;筛选的逻辑&#xff08;4&#xff09;loc函数和iloc函数&#xff1a;一、pandas基础 &#xff…