Hibernate关联关系笔记

  • 单向N:1

    *  有连接表:在N方使用<join>/<many-to-one>。1方无需配置与之关联的持久化类。

    *  没有连接表:在N方使用<many-to-one>。1方无需配置与之关联的持久化类。

  • 单向1:N

    *  有连接表: 在1方使用<set>/<many-to-many>,在many-to-many中将unique属性设置为true。 N方无需配置与之关联的持久化类。

    *  没有连接表:在1方使用<set>/<one-to-many>。N方无需配置与之关联的持久化类。

    注:cascade属性在<set>上配置

  • 双向1:N

    *  有连接表:1方使用<set>/<many-to-many>并设置<many-to-many>的unique参数为true。N方使用<join>/<many-to-one>

    *  没有连接表:1方使用<set>/<one-to-many>。N方使用<many-to-one>

    注:只能在1的一方使用inverse放弃控制权,N的一方无法放弃控制权,因为没有inverse属性。

  • 单向N:N

    控制端使用<set>/<many-to-many>

  • 双向N:N

    两边都使用<set>/<many-to-many>

  • 单向1:1

    *  基于外键:控制端使用<many-to-one>,并设置<many-to-one>的unique属性为true。

    *  基于主键:控制端设置ID生成策略为foreign,并使用<one-to-one>标签。

    *  基于连接表:控制端使用<join>/<many-to-one>,并设置<many-to-one>的unique属性为true

  • 双向1:1

    *  基于外键:一方使用<many-to-one>并设置其unique参数为true。另一方使用<one-to-one>

    *  基于主键:一方设置ID生成策略为foreign,并使用<one-to-one>标签。另一方只使用<one-to-one>标签。

    *  基于连接表:两边都使用<join>/<many-to-one>。并都设置<join>下的<key>unique属性和<many-to-one>的unique属性为true。而且两边需要有一边设置inverse参数为true,即放弃控制权。

hibernate关联关系笔记的更多相关文章

  1. Hibernate学习笔记(二)

    2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...

  2. Hibernate学习笔记(一)

    2016/4/18 19:58:58 Hibernate学习笔记(一) 1.Hibernate框架的概述: 就是一个持久层的ORM框架. ORM:对象关系映射.将Java中实体对象与关系型数据库中表建 ...

  3. Hibernate 学习笔记一

    Hibernate 学习笔记一 今天学习了hibernate的一点入门知识,主要是配置domain对象和表的关系映射,hibernate的一些常用的配置,以及对应的一个向数据库插入数据的小例子.期间碰 ...

  4. Hibernate关联关系映射

    1.  Hibernate关联关系映射 1.1.  one to one <class name="Person"> <id name="id" ...

  5. Hibernate学习笔记-Hibernate HQL查询

    Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...

  6. Hibernate学习笔记四 查询

    HQL语法 1.基本语法 String hql = " from com.yyb.domain.Customer ";//完整写法 String hql2 = " fro ...

  7. hibernate关联关系的crud2

    hibernate关联关系的CRUD操作,解释都在注释里了,讲了fetchType.cascade. User类: package com.oracle.hibernate; import javax ...

  8. Hibernate学习笔记(六)—— 查询优化

    一.Hibernate的抓取策略 1.1 什么是抓取策略 抓取策略是当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略. HIbern ...

  9. Hibernate 关联关系(一对多)

    Hibernate 关联关系(一对多) 1. 什么是关联(association) 1.1 关联指的是类之间的引用关系.如果类A与类B关联,那么被引用的类B将被定义为类A的属性.例如: class B ...

随机推荐

  1. 序列化对象为xml字符串

    /// <summary>    /// 序列化对象为xml字符串    /// </summary>    /// <param name="obj" ...

  2. block、inline、inline-block

    block: block - 块级元素 常见的块级元素包括:div,form,p,table,ul,ol,dl,h1~h6,pre block 可以包含 inlne 和 block 和 inline- ...

  3. Unity 3D学习之《Unity 3D 手机游戏开发》1

    P10: 设置断点步骤02,在Project窗口右键(是在下图中的红色区域,点右键)选择[Sync Mono Develop Project],打开MonoDevelop编辑器 P11: " ...

  4. springMVC接收参数的几种方式

    Spring3 MVC请求参数获取的几种方法 一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}&q ...

  5. Win10 Build9926 更新问题解决

    将Dns 改为 4.2.2.2 备用 4.2.2.1

  6. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  7. 编辑 Ext 表格(二)——— 编辑表格元素

    一.编辑单元格 Ext 中通过配置表格的属性 plugins 来设置表格是否可编辑, 表格的配置具体如下: var gridTable = Ext.create('Ext.grid.Panel', { ...

  8. NYOJ题目28大数阶乘

    -------------------------------------祭出BigInteger AC代码: import java.math.BigInteger; import java.uti ...

  9. 微信支付JSAPI模式及退款CodeIgniter集成篇

    微信支付接口文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1 首先你得知道这个jsapi是不能离开微信进行调用支付的,明白 ...

  10. Oracle安装介质及补丁集下载地址

    Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP http://downl ...