标签:style blog ar color 使用 sp java for strong
public class Person {
private String id;
private String name;
private IdCard idCard;
//省略set、get方法
} IdCard类public class IdCard {
private String id;
private String securityBureau;
private Person person;
//省略set、get方法
} Person.hbm.xml配置: <hibernate-mapping>
<class name="com.tgb.Person" table="Persons">
<id name="id" column="id" type="string">
<!--这里生成策略不要纠结,假设它产生身份证号码-->
<generator class="uuid"></generator>
</id>
<property name="name" column="name" type="string"></property>
<!--使用<one-to-one>表示一对一关联-->
<one-to-one name="idCard" class="com.tgb.IdCard" cascade="all"></one-to-one>
</class>
</hibernate-mapping> <span style="font-family: FangSong_GB2312; background-color: rgb(255, 255, 255);"> </span> IdCard.hbm.xml配置:<hibernate-mapping>
<class name="com.tgb.IdCard" table="idCards" >
<id name="id" column="id" type="String">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="securityBureau" column="securityBureau" type="string"></property>
<!-- 一对一关联 -->
<one-to-one name="Person" class="com.tgb.User" ></one-to-one>
</class>
</hibernate-mapping> 由于采用了主键关联方式,两张表的主键值须保持同步。这也就是说,我们只需为一张表设定主键生成策略,而另一张表的主键与之共享就可以了。但是idCards表中的主键id并不是参照persons表id的外键。
虽然在Pserson类和IdCard类之间有互相引用关系,但是数据库端persons和idCards表没有任何参照关系,只是当我们保存User对象时,若User中的idCard属性值不为NULL,此时Hibernate就会以Use.hbm.xml中使用的主键生成器生成的主键值作为向users表和idCards表中插入记录的主键值,此时保持了关联记录的主键值的同步(由输出的SQL语句可知这是由Hibernate处理的,数据库并不知情)
标签:style blog ar color 使用 sp java for strong
原文地址:http://blog.csdn.net/zhuojiajin/article/details/41628835