hibernate映射文件one-to-one
- one-to-one 元素
属性:
- name:映射类属性的名字
- class:映射的目标类
- cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行更新操作时级联、delete执行删除操作时级联
- constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束 默认值为false
- fetch:设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
- property-ref:设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键
- access:Hibernate访问这个属性的策略 默认值为property
- formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
- lazy:指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
- entity-name:被关联类的实体名
单向1——1关联:
需要在实体中提供setter、getter方法;
事实上单向的1——1和N——1配置非常相似;只需要在many-to-one元素增加 unique="true"属性,用于表示N的一端必须是唯一的即可!(既然N的一端加了唯一性约束那么就成了1——1了!)
A、基于外键的单向1——1关联:
将无 连接表的many-to-one元素增加 unique="true"属性,即可完成映射!
eg:
<!-- 用于映射1-1关联实体,指定关联实体类为Address
指定外键列名为addressId,并指定级联全部操作 -->
<many-to-one name="address" cascade="all"
unique="true" class="Address"
column="addressId"/>
B、有连接表的单向1——1关联:
将连接表的many-to-one元素增加 unique="true"属性,即可完成映射!
eg:
<!-- 映射连接表中参照关联实体的外键列 -->
<many-to-one name="address" cascade="all"
unique="true" class="Address"
column="addressId"/>
C、基于主键的单向1——1关联:
eg:
<class name="Person">
<!-- 映射标识属性personid -->
<id name="personid" column="addressid">
<!-- 基于主键关联时,主键生成策略是foreign,
表明根据关联类的主键来生成本表主键 -->
<generator class="foreign">
<!-- 指定引用关联实体的属性名 -->
<param name="property">address </param>
</generator>
</id>
<!-- 用于映射普通属性 -->
<property name="name" type="string"/>
<property name="age" type="int"/>
<!-- 下面映射基于主键的1-1关联 -->
<one-to-one name="address "/>
</class>
双向1——1关联:
需要在两边实体类中增加引用关联实体的属性:
A、 基于外键的双向1——1关联:
基于外键的1——1关联,外键可以存放在任意一端,
- 存放的一端要增加many-to-one元素,并添加unique=”true“,
- 另一端使用one-to-one元素,使用property-ref指定引用关联类的属性;
eg:
Preson.hbm.xml
<!-- one-to-one元素映射关联属性,外键列在对方的表内
person-ref指定引用关联类的属性。
即:在address属性所属的Address类内,
必须有person属性的setter和getter方法 -->
<one-to-one name="address" property-ref="person"/>
Address.hbm.xml
<!-- 使用many-to-one映射1-1关联实体
unique="true"确定为1-1-->
<many-to-one name="person" unique="true"
column="person_id" not-null="true"/>
B、基于主键的双向1——1关联:
主键映射策略,一端的主键生成器必须使用foreign策略,表名根据对方的主键生成策略来生成自己的主键本实体不能拥有自己的主键生成策略;
eg:
Preson.hbm.xml
<!-- one-to-one元素映射关联属性 -->
<one-to-one name="address"/>
Address.hbm.xml
<!-- Address持久化类-->
<class name="Address">
<!-- 映射标识属性addressid -->
<id name="addressid">
<!-- 指定foreign主键生成器策略-->
<generator class="foreign">
<!-- 指定根据主键将根据person属性引用的
关联实体的主键来生成-->
<param name="property">person</param>
</generator>
</id>
<!-- 映射普通属性addressdetail -->
<property name="addressdetail"/>
<!-- 用于映射关联属性 -->
<one-to-one name="person"/>
</class>
C、有连接表的双向1——1关联:
用的比较少,只给出例子:
eg:
Preson.hbm.xml
<!-- 使用join元素强制使用连接表 -->
<join table="person_address" inverse="true">
<!-- 映射连接表中参照本实体主键的外键列 -->
<key column="person_id" unique="true"/>
<!-- 映射1-1关联实体 -->
<many-to-one name="address" class="Address"
unique="true" column="address_id"/>
</join>
Address.hbm.xml
<!-- 使用join元素强制使用连接表 -->
<join table="person_address" optional="true">
<!-- 映射连接表中参照本实体主键的外键列 -->
<key column="address_id" unique="true"/>
<!-- 映射1-1关联实体 -->
<many-to-one name="person" class="Person"
unique="true" column="person_id" />
</join>
hibernate映射文件one-to-one的更多相关文章
- Hibernate映射文件如何配置触发器
Hibernate映射文件之触发器生成(generated属性.database-object元素) (2013-02-27 12:28:49) 转载▼ 标签: it 分类: JAVA学习笔记 这里分 ...
- Spring集成Hibernate映射文件的4种方式
概要: 在Spring的applicationContext.xml中集成Hibernate映射文件,通常是在<sessionFactory>这个Bean实例中进行的,若配置的映射文件较少 ...
- Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件
[前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...
- spring配置hibernate映射文件-------通配符
<!-- 这里一定要注意是使用spring的mappingLocations属性进行通配的 --> <property name="mappingLocation ...
- 生成 hibernate 映射文件和实体类
创建web工程,使用Hibernate的时候,在工程里一个一个创建实体类太麻烦,浪费时间,现在教大家如何用MyEclipse自动生成Hibernate映射文件及实体类 方法/步骤 创建数据库,创建 ...
- hibernate映射文件set key one-to-many
转自:https://www.linuxidc.com/Linux/2013-11/92228.htm 1 hibernate映射文件set key one-to-many的配置. POJOs如下: ...
- LocalSessionFactoryBean有几个属性查找hibernate映射文件
LocalSessionFactoryBean有几个属性查找hibernate映射文件: mappingResources.mappingLocations.mappingDirectoryLocat ...
- Hibernate映射文件详解(News***.hbm.xml)二
转自 http://blog.csdn.net/a9529lty/article/details/6454924 一.hibernate映射文件的作用: Hibernate映射文件是Hibernate ...
- Hibernate映射文件详解(News***.hbm.xml)一
Hibernate是一个彻底的ORM(Object Relational Mapping,对象关系映射)开源框架. 我们先看一下官方文档所给出的,Hibernate 体系结构的高层视图: 其中PO=P ...
- hibernate映射文件
Hibernate的持久化类和关系数据库之间的映射通常是用一个XML文档来定义的.该文档通过一系列XML元素的配置,来将持久化类与数据库表之间建立起一一映射.这意味着映射文档是按照持久化类的定义来创建 ...
随机推荐
- vm导入后远程桌面无法登陆域账户
以本地Admin账户登录,打开C:\Windows\System32\sysprep目录,运行sysprep.exe工具,勾选Generalize,点击OK.系统重启后对Windows重新初始化,生成 ...
- Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API【附PPT】
编者按]随着近来软件规模的日益庞大,API编程接口的设计变的越来越重要.良好的接口设计可以降低系统各部分之间的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合度,从而提高系统的维护性和稳定性. J ...
- MyBatis知多少(24)存储过程
使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLO ...
- Linux高级编程--10.Socket编程
Linux下的Socket编程大体上包括Tcp Socket.Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较 ...
- Spring3 MVC入门示例
Spring3 MVC 介绍: 1. Spring MVC 是Spring 框架的Web组件,能够开发WEB工程 2. 能与其它框架(Struts2)很好的集成 3. Spring MVC 是以se ...
- 编写高质量JS代码的68个有效方法(五)
No.21.使用apply方法通过不同数量的参数调用函数 Tips: 使用apply方法自定一个可计算的参数数组来调用可变参数的函数 使用apply方法的第一个参数给可变参数的方法提供一个接收者 // ...
- Android自定义之TextView跑马灯的监听
TextView都有跑马灯的效果,如果说让你去监听跑马灯效果的执行,我觉得这个需求有点二了,但是也要实现. 思路: 1.自定义View 继承TextView 这种方法过于麻烦,只是监听一个跑马灯 ...
- DDD:如何更好的使用值对象
背景 大师们让我们多使用“值语义”的对象(并非一定是是值对象),我们工作中也没有少使用(int.bool.date等等),只是大多数人都没有多的自定义“值语义”的类型(我也其中之一),本文不说其它的, ...
- Android 布局之LinearLayout
Android 布局之LinearLayout 1 LinearLayout简介 LinearLayout是线程布局.它包括2个方向(android:orientation):“水平”(horizon ...
- VM不能连入局域网
如果选了Host-only,那么虚拟机与跑虚拟机的宿主就无法连通了. 可以选用Bridged模式,那么虚拟机与跑虚拟机的主机连通了