`
younglibin
  • 浏览: 1193309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate映射文件one-to-one 元素属性

阅读更多
  1. one-to-one 元素

属性:

  1. name:映射类属性的名字
  2. class:映射的目标类
  3. cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联、none所有操作情况均不进行级联、save-update执行更新操作时级联、delete执行删除操作时级联
  4. constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束 默认值为false
  5. fetch:设置抓取数据的策略 可选值为 join外连接抓取、select序列选择抓取
  6. property-ref:设置关联类的属性名,此属性和本类的主键相对应 默认值为关联类的主键
  7. access:Hibernate访问这个属性的策略 默认值为property
  8. formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示
  9. lazy:指定是否采用延迟加载及加载策略 默认值为proxy通过代理进行关联 可选值为 true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载
  10. entity-name:被关联类的实体名

单向1——1关联:

需要在实体中提供setter、getter方法;

 事实上单向的1——1和N——1配置非常相似;只需要在many-to-one元素增加 unique="true"属性,用于表示N的一端必须是唯一的即可!(既然N的一端加了唯一性约束那么就成了1——1了!)

   A、基于外键的单向1——1关联:

  将连接表的many-to-one元素增加 unique="true"属性,即可完成映射!

    eg:

<!-- 用于映射1-1关联实体,指定关联实体类为Address
   指定外键列名为addressId,并指定级联全部操作 -->

  <many-to-one name="address" cascade="all"
   unique="true" class="Address"
   column="addressId"/>

 

  B、有连接表的单向1——1关联:

将连接表的many-to-one元素增加 unique="true"属性,即可完成映射!

 

eg:

<!-- 映射连接表中参照关联实体的外键列 -->
   <many-to-one name="address" cascade="all"
    unique="true" class="Address"
    column="addressId"/>

   C、基于主键的单向1——1关联:

eg:

<class name="Person">
  <!-- 映射标识属性personid -->
  <id name="personid" column="addressid">
   <!--  基于主键关联时,主键生成策略是foreign,
    表明根据关联类的主键来生成本表主键 -->
   <generator class="foreign">
    <!-- 指定引用关联实体的属性名 -->
    <param name="property">address</param>
   </generator>
  </id>
  <!-- 用于映射普通属性 -->
  <property name="name" type="string"/>
  <property name="age" type="int"/>
  <!-- 下面映射基于主键的1-1关联 -->
  <one-to-one name="address"/>
 </class>

 

 双向1——1关联:

需要在两边实体类中增加引用关联实体的属性:

A、 基于外键的双向1——1关联:

    基于外键的1——1关联,外键可以存放在任意一端,

  1.        存放的一端要增加many-to-one元素,并添加unique=”true“,
  2.        另一端使用one-to-one元素,使用property-ref指定引用关联类的属性;

eg:

Preson.hbm.xml
 <!-- one-to-one元素映射关联属性,外键列在对方的表内
   person-ref指定引用关联类的属性。
   即:在address属性所属的Address类内,
   必须有person属性的setter和getter方法 -->

  <one-to-one name="address" property-ref="person"/>

 

Address.hbm.xml

  <!-- 使用many-to-one映射1-1关联实体
   unique="true"确定为1-1-->

  <many-to-one name="person" unique="true"
   column="person_id" not-null="true"/>

 

B、基于主键的双向1——1关联:

             主键映射策略,一端的主键生成器必须使用foreign策略,表名根据对方的主键生成策略来生成自己的主键本实体不能拥有自己的主键生成策略;

 

eg:
Preson.hbm.xml

<!-- one-to-one元素映射关联属性 -->
  <one-to-one name="address"/>

Address.hbm.xml

<!-- Address持久化类-->
 <class name="Address">
  <!-- 映射标识属性addressid -->
  <id name="addressid">
   <!-- 指定foreign主键生成器策略-->
   <generator class="foreign">
    <!-- 指定根据主键将根据person属性引用的
     关联实体的主键来生成-->

    <param name="property">person</param>
   </generator>
  </id>
  <!-- 映射普通属性addressdetail -->
  <property name="addressdetail"/>
  <!-- 用于映射关联属性 -->
  
<one-to-one name="person"/>
 </class>

 

C、有连接表的双向1——1关联:

  用的比较少,只给出例子:

eg:

Preson.hbm.xml

 <!-- 使用join元素强制使用连接表 -->
  <join table="person_address" inverse="true">
   <!-- 映射连接表中参照本实体主键的外键列 -->
   <key column="person_id" unique="true"/>
   <!-- 映射1-1关联实体 -->
   <many-to-one name="address" class="Address"
     unique="true" column="address_id"/>

  </join>

 

Address.hbm.xml

<!-- 使用join元素强制使用连接表 -->
  <join table="person_address" optional="true">
   <!-- 映射连接表中参照本实体主键的外键列 -->
   <key column="address_id" unique="true"/>
   <!-- 映射1-1关联实体 -->
   <many-to-one name="person" class="Person"
    unique="true" column="person_id" />

  </join>

 

 

分享到:
评论

相关推荐

    HibernateAPI中文版.chm

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    hibernate3.2中文文档(chm格式)

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate+中文文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    Hibernate 中文 html 帮助文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...

    Hibernate中文API大全

    以下是这个例子的Hibernate映射文件: &lt;component name="Name" class="eg.Name"&gt; &lt;!-- class attribute optional --&gt; 人员(Person)表中将包括pid, birthday, initial, first和 last等字段...

    Hibernate中文详细学习文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联...

    最全Hibernate 参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...

    hibernate 体系结构与配置 参考文档(html)

    一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...

    Hibernate教程

    Hibernate参考文档 ...24.4.1. "Typed" one-to-one association 24.4.2. Composite key example 24.4.3. Content based discrimination 24.4.4. Associations on alternate keys 25. 最佳实践(Best Practices)

    Hibernate_Annotation关联映射

    一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列...

    hibernate 框架详解

    一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    hibernate3.04中文文档.chm

    符合Java习惯的关系...24.4.1. \"Typed\" one-to-one association 24.4.2. Composite key example 24.4.3. Content based discrimination 24.4.4. Associations on alternate keys 25. 最佳实践(Best Practices)

    Hibernate3+中文参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...

    Hibernate3的帮助文档

    7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...

    hibernate 3中的缓存小结

    hibernate 3中的缓存小结 2.2. 一级缓存的管理: 当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或... &lt;one-to-many class="org.qiujy.domain.cachedemo.Product"/&gt; &lt;/hibernate-mapping&gt;

    Hibernate参考文档

    6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

    精通Hibernate:对象持久化技术第二版part3

    7.1.1 [many-to-one]元素的not-null属性 153 7.1.2 级联保存和更新 155 7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身...

    Hibernate注解

    通常和&lt;one-to-one&gt;联合起来使用。 * 例:@Id * @GeneratedValue(generator = "idGenerator") * @GenericGenerator(name = "idGenerator", strategy = "foreign", * parameters = { @Parameter(name = "property...

Global site tag (gtag.js) - Google Analytics