主键共享:
<class name="Boss">
<id>
<generator name="sequence/increment">
...
<one-to-one name="company" cascade="save-update/all">
</class>
<class name="Company">
<id>
<generator name="foreign">
<param name="property">boss</param>
</generator>
...
<one-to-one name="boss">
</class>
主外键关联:
<class name="Boss">
<id>
<generator name="sequence/increment">
...
<one-to-one name="company" cascade="save-update/all" property-ref="boss">
</class>
<class name="Company">
<id>
<generator name="sequence/increment">
...
<many-to-one name="boss" unique="true" column="boss_id">
</class>
一对多:
延迟加载:查询1的时候,默认不查多的信息
===============================================================================
注意:
一对多中默认是延迟加载策略,则只查询一表中的信息,意味着程序中只能使用一表中的信息
解决:如果想使用多表中得信息
1)可以设置立即抓取,即
<set ... lazy="false">
session.get()方法会使用两条sql语句查询两张表中的相关信息
如果想使用单条sql语句表连接查询相关信息,则
则设置fetch="join"(默认fetch="select")
---------------------------------------
如果lazy=true 和 fetch=join同时出现,则
延迟加载失效
---------------------------------------
2)保持lazy=true的前提下,在查询的方法中,事务提交之前,
只要尝试使用过多这方的信息,则hibernate会自动查询多表的内容
===============================================================================