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属性来查的