hibernate常用映射配置总结

本文详细介绍了ORM中的各种映射方式,包括集合映射、复合主键映射、一对多、多对一、多对多、一对一及组合映射等,并探讨了简单的继承映射和复杂的继承映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合映射
<set name="" table="">
  <key column=""></key>
  <element column="" type=""></element>
</set>


<list name="" table="">
  <key column=""></key>
  <index column=""></index>
  <element column="" type=""></element>
</list>


<map name="" table="">
  <key column=""></key>
  <map-key column="" type=""></map-key>
  <element column="" type=""></element>
</map>


复合主键映射
  tips:复合主键一定要实现Serializable接口
<composite-id name="" class="复合主键所属类类">
  <key-property name="" column=""></key-property>
</composite-id>


一对多
<set name="" >
  <key column=""></key>
  <one-to-many class=""/>
</set>


多对一
<many-to-one name="" column="" class=""></many-to-one>


多对多(中间表实现)
<set name="集合属性的名字" table="中间表的名字">
  <key column="中间表引用的字段名(外键,对应当前配置表的主键)"></key>
  <many-to-many column="中间表外键对应的字段" class="集合属性的类型s"></many-to-many>
</set>




一对一
(1)通过外键映射
 无外建方
 <one-to-one name="" class="" property-ref=""></one-to-one>
 有外键方
 <many-to-one name="" column="" class="" unique="true 多对一并且外键为唯一值实现一对一" ></many-to-one>
 
(2)通过主键映射
  无主键方
   <one-to-one name="" class=""></one-to-one>
  有主键方
    <id name="">
      <generator class="foreign">
<param name="property">和下面的name要一样</param>
</generator>
    </id>
    <one-to-one name="" class="" constrained="true 添加外键约束"></one-to-one>
   
组合映射(类中包含类,映射到同一张表)
<component name="" class="">
  <property name="" type=""></property>
</component>


继承映射
(1)简单的继承映射
  每个子类都要有配置文件,然后通过<property></property>设定所有字段
  
 (2)复杂的继承映射
   (2.1)映射为一张表
    <!-- 鉴别器 -->
<discriminator column="" type=""></discriminator>
    <subclass name="" class="" discriminator-value="">
       <property name="" type=""></property>
    </subclass>
    (2.2)父类,子类都映射一张表
    <joined-subclass name="" table="">
          <key column=""/>
         <property name="" type=""></property>
    <joined-subclass>
    
    (2.2)每个子类都映射一张表
    <id name="">
      <generator class="不能为自增长主键生成器"></generator> 
    </id>
    <union-subclass name="" table="">
       <property name="" type=""></property>
    </union-subclass>

转载于:https://www.cnblogs.com/chenny3/p/10226216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值