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 写法。


你可能感兴趣的:(框架,hibernate,框架)