购买公网证书,导入到NetScaler中,LDAP认证失败
2015-05-29 17:04
246 查看
本节讲述一下Hibernate中一对一关系的配置和使用。一对一关系也是比较常见的一种关系,在Hibernate中可以分为单向一对一关系和双向一对一关系。分类的原因一般是由于需求决定的,单双向是站在不同的角度去看认为规定的。一对一关系相对来说比较少见。但是在某些时候也会用到。比如学生和学生证两个实体就是一对一的。
这里面Student持有Card的引用,在加载Student的时候,Hibernate会自动加载上Card来。它们的hbm配置文件如下:
Student.hbm.xml.负责维护关系
配置文件如下
上面的两种一对一都是采用主键关联的方式,即它们两个表的主键是一样的,student用的表是采用foreign的方式,引用Card的主键。一对一关联还有一种外键关联的方式。它的UML图和双向一对一一样,只是配置文件不一样。
首先看一下它们各自的配置文件。Student.hbml.xml和Card.hbm.xml
一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。多方退化成一只需要在<many-to-one>标签中设置"unique"="true"。
这里面重要的一个知识点就是<many-to-one>和<one-to-one>的区别,这里主要应用了这个不同。<many-to-one>不仅可以加载到另一端的数据,还会在多的一端表中加入一个外键,而<one-to-one>只会加载另一端数据,不会影响表结构。
单向一对一
单向一对一是站在其中的一端看的,主要是根据需求决定的。单向标明一端持有另一端的引用,而另一端则没有引用。如下UML图:这里面Student持有Card的引用,在加载Student的时候,Hibernate会自动加载上Card来。它们的hbm配置文件如下:
Student.hbm.xml.负责维护关系
Card.hbm.xml不负责维护主键,是一个简单的映射文件。 <?xmlversion="1.0"?> <!DOCTYPEhibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <classname="com.lsh.hibernate.Card" table="t_card"> <idname="id"> <generatorclass="native"/> </id> <propertyname="school"/> </class> </hibernate-mapping>
双向一对一
双向一对一是彼此都持有对方的引用,在一端加载的时候,另一端就会自动加载上来。看看双向一对一的UML图配置文件如下
它和上面的单向的Student.hbm.xml配置一样,这两个不同的是在Card.hbm.xml中使用<one-to-one>标签把它持有的student加载上来。 <?xmlversion="1.0"?> <!DOCTYPEhibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.lsh.hibernate.Card" table="t_card"> <idname="id"> <generatorclass="native"/> </id> <property name="school"/> <one-to-one name="student"/> </class> </hibernate-mapping>
上面的两种一对一都是采用主键关联的方式,即它们两个表的主键是一样的,student用的表是采用foreign的方式,引用Card的主键。一对一关联还有一种外键关联的方式。它的UML图和双向一对一一样,只是配置文件不一样。
首先看一下它们各自的配置文件。Student.hbml.xml和Card.hbm.xml
<?xmlversion="1.0"?> <!DOCTYPEhibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <classname="com.bjpowernode.hibernate.Card" table="t_card"> <idname="id"> <generatorclass="native"/> </id> <propertyname="school"/> <one-to-onename="student" property-ref="card"/> </class> </hibernate-mapping>
一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。多方退化成一只需要在<many-to-one>标签中设置"unique"="true"。
这里面重要的一个知识点就是<many-to-one>和<one-to-one>的区别,这里主要应用了这个不同。<many-to-one>不仅可以加载到另一端的数据,还会在多的一端表中加入一个外键,而<one-to-one>只会加载另一端数据,不会影响表结构。
相关文章推荐
- iOS计算网络测试中的丢包率,延迟,下载速度等参数、iOS实现ping
- 52. C# -- 多线程
- 说全球语言,交世界大牛:技术大牛们快来呀!
- mysql位运算
- django+apache2+nginx+mod_wsgi
- Detected Maven Version: 3.0.2 is not in the allowed range 3.0.3
- JavaWeb将图片显示在浏览器中
- DOJO(二) 基本DOM操作
- SpringMVC入门学习(三)+Spring应用(整合)
- ATMEL精妙的IRQ中断处理过程
- C#(WinForm)实现软件注册
- 从今天开始DSP嵌入式控制系统的研发
- openstack 之 物理机时间设定
- 最新版SDWebImage的使用
- Liunx 下如何打开doc和docx
- 面试题5:打印链表的值
- oracle设置定时任务来调用存储过程完成统计(每小时计时一次存到hour表)
- java cxf webservice 生成客户端 调用 服务端
- 数据库之完全备份、差异备份以及增量备份
- 《构建之法》第8,9,10章读后感