Hibernate_优化与事务


延迟加载

  1. 什么是延迟加载?
    延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。
  2. Hibernate中对如下内容提供了延迟加载策略
    • 实体对象的延迟加载
      < class >标签中定义lazy属性:true和false可选
    • 集合类型的延迟加载
      < set >、< list >集合属性中定义lazy属性:true、false和extra可选
    • 单端延迟加载
      < many-to-one >和< one-to-one >定义lazy属性:false、proxy和noproxy
    • 普通属性延迟加载
      < property >定义lazy属性:false和true可选,但是需要类增强
实体级别的延迟加载
  • 实体级别的延迟加载需在映射文件的中进行配置lazy属性
<!-- 配置实体级别的延迟加载 -->
<class name="Employee" table="emp" lazy="true">
  • 实体级别的延迟加载lazy属性值有true和false可选,默认值true
  • 通过代理(javassit)机制Hibernate实现了实体级别的延迟加载
  • 实体级别的延迟加载只对Session的load()方法有效,当lazy为true时,执行load()方 - 法会延迟加载对应的实体对象,只有访问实体对象的非主键属性时才执行SQL查询语句,从数据库中获取对应的数据。
@Test
public void testClassLazyTrue(){
    Employee emp = (Employee) session.load(Employee.class,9000);
    //获取非主键属性时,会从一级缓存获取该实体,如果缓存中无该对象,则发送SQL进行查询
    System.out.println(emp.getEname());
}
集合关联属性的延迟加载
  1. 集合关联属性的延迟加载
    1. 在Hibernate的延迟加载机制中,针对集合类型的应用,意义是最为重大
    2. 集合关联属性的延迟加载可以大大使Hibernate性能得到的提高
    3. 为实现集合的延迟加载Hibernate提供JDK中集合框架的独立实现,例如在一对多的关联关系中使用Set集合并不是JDK中的HashSet类型,而是Hibernate独立实现的PersistentSet。
    4. 通过使用自定义集合类的实现,Hibernate实现了集合类型的延迟加载。
  2. 集合关联属性延迟加载配置
未完待续

抓取策略


缓存机制


事务简介


乐观锁与悲观锁

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值