Hibernate笔记(4)

一、多对一关系映射many-to-one

案例:基于多对一关系实现根据Service 获取Account 信息

 1) 在Service 实体类中添加一个Account 类型属性,用于存储相关的Account 对象

 2) 在Service.hbm.xml 中采用<many-to-one>描述关联属性

      <many-to-one name="关联属性名" class="要关联和加载的一方Account" column="指定关联条件的外键字段"/>

 3.)删除Service.hbm.xml 中与column 重复的字段映射<property>

 4.)删除Service 实体类中accountId 属性

 5)通过service.getAccount() 就可以获取相关的Account 信息


二、基于关系的操作

  1)关联抓取join fetch
       默认情况下,关联属性在抓取时,采用单独在发送一条SQL 语句实现。采用join fetch 可以实现用一条SQL 语句抓取主对象和关联属性的数据信息。
       HQL 语法格式:"from 类型 别名 join fetch 别名.关联属性"
       如:"from Account a join fetch a.services"
       提示:如果需要使用主对象和关系属性数据,建议采用join fetch 方式,可以减少与 数据库的交互次数。
 2)在关系属性映射部分使用lazy="false"fetch="select" 等价于join fetch 的作用
        lazy 属性可以控制是否延迟加载
           lazy="true" 采取延迟加载
           lazy="false" 采取立刻加载
         fetch 属性可以控制关联属性抓取的策略
            fetch="select" 单独再发送一个select 语句加载关联属性数据(默认值)
            fetch="join" 采取表连接方式将关联属性数据同主对象一同抓取(一个SQL完成)
         提示:该方法不推荐使用,因为会影响所有查询操作,建议采用HQL join fetch 写法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值