Hibernate映射(一)------单向一对一主键关联
2014-06-12 12:07
239 查看
单向一对一主键关联,基于主键关联的持久化类不能拥有自己的主键生成策略,它的主键由关联类负责生成。也就是说它的主键由另外一个类来提供。如图所示:
![](http://img.blog.csdn.net/20140612111243312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEzNzE1MTA2Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中Person类指向IdCard类,Person类的主键是从IdCard类中获取的主键。实现如下:
1.建立Person与IdCard两个映射类,其中在Person类中有IdCard类的一个变量引用;
2.对两个类中的属性进行生成getter与setter方法,这里不再粘贴代码了;
3.建立映射文件,指定数据库表和映射类之间的关系。
IdCard映射文件:
这里id的生成策略是uuid,Hibernate在保存对象时,生成一个UUID字符串作为主键,保证了唯一性,但其并无任何业务逻辑意义,只能作为主键,唯一缺点长度较大,占用存储空间大,但是有两个很重要的优点,Hibernate在维护主键时,不用去数据库查询,从而提高效率,而且它是跨数据库的,以后切换数据库极其方便。
Person映射文件:
Person类的主键是从IdCard获取的,它的id生成策略是foreign,foreign使用另外一个相关联的对象的主键作为该对象主键。主要用于一对一关系中。通常和<one-to-one>联合起来使用来表明另外关联的类是什么。
constrained="true"表示当前主键(person的主键)还是一个外键参照了对端IdCard的主键,也就是会生成外键约束语句
最后在数据库配置文件中写上这两个映射文件
这样在前提保证IdCard类中有数据的时候,Person类可以根据foreign来获取主键。
一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段。
总结:初识Hibernate,感觉它的重点在于Hibernate.hbm.xml这个配置文件上,它将类之间的关系可以映射到数据库中,这是与传统的JDBC不一样地方。Hibernate完全是采用面向对象的方式来操纵数据库,使我们能够简化开发,现在还不是很理解这一句,在以后学习中慢慢体会吧。
其中Person类指向IdCard类,Person类的主键是从IdCard类中获取的主键。实现如下:
1.建立Person与IdCard两个映射类,其中在Person类中有IdCard类的一个变量引用;
2.对两个类中的属性进行生成getter与setter方法,这里不再粘贴代码了;
3.建立映射文件,指定数据库表和映射类之间的关系。
IdCard映射文件:
<class name="com.bjpowernode.hibernate.IdCard" table="t_idCard" > <id name="id"> <generator class="uuid"/> </id> <property name="cardNo"/> </class>
这里id的生成策略是uuid,Hibernate在保存对象时,生成一个UUID字符串作为主键,保证了唯一性,但其并无任何业务逻辑意义,只能作为主键,唯一缺点长度较大,占用存储空间大,但是有两个很重要的优点,Hibernate在维护主键时,不用去数据库查询,从而提高效率,而且它是跨数据库的,以后切换数据库极其方便。
Person映射文件:
<span style="font-size:18px;"> <class name="com.bjpowernode.hibernate.Person" table="t_person" > <id name="id"> <!-- 采用foreign生成策略,foreign会取得关联对象的标识--> <generator class="foreign"> <!-- property只关联对象 --> <param name="property">idCard</param> </generator> </id> <property name="name"/> <one-to-one name="idCard" constrained="true"/> </class></span>
Person类的主键是从IdCard获取的,它的id生成策略是foreign,foreign使用另外一个相关联的对象的主键作为该对象主键。主要用于一对一关系中。通常和<one-to-one>联合起来使用来表明另外关联的类是什么。
constrained="true"表示当前主键(person的主键)还是一个外键参照了对端IdCard的主键,也就是会生成外键约束语句
最后在数据库配置文件中写上这两个映射文件
<mapping resource="com/bjpowernode/hibernate/Person.hbm.xml"/> <mapping resource="com/bjpowernode/hibernate/IdCard.hbm.xml"/>
这样在前提保证IdCard类中有数据的时候,Person类可以根据foreign来获取主键。
一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段。
总结:初识Hibernate,感觉它的重点在于Hibernate.hbm.xml这个配置文件上,它将类之间的关系可以映射到数据库中,这是与传统的JDBC不一样地方。Hibernate完全是采用面向对象的方式来操纵数据库,使我们能够简化开发,现在还不是很理解这一句,在以后学习中慢慢体会吧。
相关文章推荐
- Hibernate关系映射(5)_一对一单向联合主键关联
- Hibernate一对一主键关联映射(单向)
- Hibernate之对象关系映射02一对一单向主键关联
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- Hibernate基于主键和外键的单向一对一的关联映射
- 新手上路之Hibernate(四):单向一对一关联映射(主键、唯一外键关联)
- Hibernate实体关系映射:单向主键一对一关联
- Hibernate关系映射(3)_一对一单向主键关联
- hibernate一对一主键关联映射
- Hibernate 关系映射(五) 基于主键关联的单向1:1
- hibernate一对一唯一外键关联映射(单向关联Person----->IdCard)
- Hibernate关系映射(4)_一对一双向主键关联
- Hibernate学习12 -- 关联映射2 -- 一对一关联1 -- 一对一主键关联
- hibernate 一对一外键关联映射_单向
- Hibernate关系映射 --- 一对一实例分析(双向关联,是基于主键的)
- hibernate的一对一映射-主键映射-单向-mysql数据库
- hibernate单向一对一关联映射(one-to-one)XML与注解版
- hibernate映射一对一关联(主键关联)
- hibernate一对一主键关联映射双向
- hibernate一对一单向外键关联_Annotation_联合主键