hibernate表

1 多对一关联: 在多的一段如User.hbm.xml<many-to-one name="group" column="groupid" cascade="save-update"></many-to-one>cascade是级联自动加载Group对象不用save(),Group.hbm.xml正常配置

2 主键关联 :即让两个对象具有相同的主键值,以表明他们之间地一一对应的关系,数据库表不会有额外的字段来维护它们之间地关系,仅通过表的主键来关联例如:

<单向关联>

<class name="com.test.hibernate.Person" table="Person">

<idname="id">

<!--person的主键也是外键-->

<generatorclass="foreign">

<paramname="property">idCard</param>

</generator>

</id>

<propertyname="name"></property>

  <!-- one-to-one标签是默认加载IdCard的 -->  

<one-to-one name="idCard" constrained="true"></one-to-one> 默认是级联的通过主键加载(当一个类是另一个类的属性时,当加载当前的类时会自动加载另一个类,不用session.save(另一个类的实例);调用另一个类当前类会自动的session.save)one-one的作用是拿person的主键到IdCard找和Person相同的id,找到后加载的;IdCard.hbm.xml正常配置;

<双向关联>: 在单向关联的基础上,在IdCar.hbm.xml上添加<one-to-one name="person"> </one-to-one>,别忘了在对象IdCard类中添加person的属性

注意:在对对象进行数据库操作时,虽然是双向的,但只能通过Person能自动加载IdCard类,反过来不行?????

3 唯一的外键关联

本来是多对一的配置但如果加上唯一的限制 后,也可以用来表示一对一关联关系;

<单向关联>

<id name="id">

<generatorclass="native"></generator>

</id>

  <property name="name"></property>

<many-to-one name="idCard" unique ="true"></many-to-one>在数据库表person中会多个idCard属性加载再议??????

<双向关联>: 在单向关联的基础上,在IdCar.hbm.xml上添加<one-to-one name="person" property-ref="idCard"> </one-to-one>

one-to-one 默认是查找主键如上是Person主键id来找的,而加上property-ref="idCard"则改为通过Person表中idCard属性来查的

相关推荐