多对多关系映射(teacher - student)
实际使用中一般转换成一对多关系,hibernate会创建中间关联表,转换成两个一对多关系。
----------------------------------------------------------------------------------------------------------------------------------------
组合关联关系
比如User表中,用户名分为firstName,laseName,我们可以把name另外建一张表与User表相关联,也可以在User表中添加两个字段共同作为User的姓名。在User.hbm.xml文件中的表达方式如下:
<component name="userName">
<property name="firstName" column="first_name"/>
<property name="lastName" column="last_name"/>
</component>
当两张表对象有关联时,想把他们保存在两张表时,用一对一或者多对一关联;当两张表对象有关联时,想把他们保存在一张表上时,使用组合关联关系。
----------------------------------------------------------------------------------------------------------------------------------------
hibernate中使用集合类
Set集合
<set name="emps">
<key column="depart_id"/>
<one-to-many class="Employee" />
</set>
List集合
<list name="emps">
<list-index column="order_clo"/>
<key column="depart_id"/>
<one-to-many class="Employee"/>
</list>
hibernate中特有集合
<bag name="emps">
<key column="depart_id"/>
<one-to-many class="Employee" />
</bag>
在Java代码中使用List集合,但是在持久化中不需要保存数据的顺序,则可以用bag
Map集合
<map name="emps">
<map-key type="string" column="name"/>
<key column="depart_id"/>
<one-to-many class="Employee" />
</map>