一对一主键关联映射



  一、一对一主键关联映射——单向
      一般一对一主键关联映射通过foreign主键生成器使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。

领域模型图:

一对一主键关联映射
 1.使用:
  <generator class="foreign">
     <param name="property">idCard</param>
  </generator>
 只是配置主键的生成策略,是由idCard的对象的主键提供(idCard是Person类的一个属性)
 
 2.再配置:
      <one-to-one name="idCard" constrained="true"></one-to-one>
 当constrainted=“true”配上之后就在映射的那张表上添加一个外键约束,表示通过一个外键引用对Person的主键进行约束。
 
 3.保存
      session.save(person),person的主键是共享了idCard的主键,所以要先保存idCard对象,然而不需要调用save(idCard),因为一对一主键关联映射中默认了cascade属性,会自动的先保存idCard对象。所以不会抛出TransientObjectException异常。


   3.删除
      默认的情况下删除一个person对象的时候不会把对应的idCard对象删除,只有配置ascade的delete操作时才能级联的把相应的idcard对象删除。
  
 4.加载
  one-to-one标签默认根据主键加载。
二 、一对一主键关联映射——双向,领域模型图:

一对一主键关联映射
 在Idcard中加入one-to-one标签
 1.配置
  <one-to-one name="person"/>
 2.保存
     还是从person端保存。
 3.加载
     one-to-one默认根据主键加载,可以从idCard加载。
 4.删除
     在one-to-one标签中配置cascade的delete操作可以将关联对象也删除

你可能感兴趣的:(领域模型)