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元素的配置,来将持久化类与数据库表之间建立起一一映射.这意味着映射文档是按照持久化类的定义来创建 ...
随机推荐
- Spring mvc4 + ActiveMQ 整合
一.配置部分 二.代码部分 三.页面部分 四.Controller控制器 五.效果展示 六.加入监听器 七.最最重要的,别忘了打赏 一.配置部分 ActiveMQ的安装这就不说了,很简单, 这个例子采 ...
- [PaPaPa][需求说明书][V1.0]
前 言 嘿嘿!嘿嘿!嘿嘿嘿嘿!大家好,我是XXX! 经过30K大大几篇文章在博客园怒刷存在感之后,咱们的小群瞬间从70人的数量增加到了将近400人.一下子加进来这么多人我还真是有点不适应啊! 我知 ...
- android xml解析添加到listview中的问题
一个问题不知什么原因,代码: public class OtherActivity extends ListActivity { @Override protected void onCreate(B ...
- unity web player的debug和log信息
win8模式下 unity web player的报错信息在如下目录下:C:\Users\xxx\AppData\Local\Temp\UnityWebPlayer\log 注:目录里的文件可能被隐藏 ...
- SQL Server 2008 R2 开启数据库远程连接
今天要测试一个.net系统~因为配置的数据库是SQL Server~我就不得不安装SQL Server 2008 R2~现在我们就一起来看看SQL Server 2008 R2是如何打开远程连接端口1 ...
- 装B必备词汇
这个页面用来记录遇到的所有高大上的词汇,本词汇集仅限于装B圈交流和讨论. 一致性 hash 算法(consistent hashing) http://blog.csdn.net/sparkliang ...
- 《Linux程序设计》--读书笔记---第十三章进程间通信:管道
管道:进程可以通过它交换更有用的数据. 我们通常是把一个进程的输出通过管道连接到另一个进程的输入: 对shell命令来说,命令的连接是通过管道字符来完成的: cmd1 | cmd2 sh ...
- poj 1474 Video Surveillance - 求多边形有没有核
/* poj 1474 Video Surveillance - 求多边形有没有核 */ #include <stdio.h> #include<math.h> const d ...
- PhoneCat App 教程
https://docs.angularjs.org/tutorial AngularJS教程第一篇文章的翻译,因为我在看中文版的AngularJS的翻译的时候,发现第一篇文章翻译的不准确,很有可能是 ...
- DDD:当视图模型、领域模型和数据模型都采用了同样的类型的时候,我们该如何处理?
如果采用这种模式,模型会在不同的逻辑层之间传递,以向内传递为例,模型的状态变化是由外向内的不同逻辑层负责修改的,因为这种模式下模型的封装性是很差的,架构和框架要做到:清晰的表达每个逻辑层该如何使用和修 ...