(Hibernate学习篇)hibernate的高级技术

在本章将介绍一些Hibernate框架的高级技术。对于数据库来说,保证数据准确一致的手段之一就是事务。在hibernate中提供了不同事务级别的封转。如JDBC事务、JTA事务等。

 

第一节:事务管理

         事务是数据库管理系统中最重要的一项技术,也是保证数据完整一致的重要手段。Hibernate框架对各种级别事务进行封转,支持事务的各种隔离级别。

        事务的概述

        “事务”是一个逻辑单元,天包含了一系列的操作。事务的4个基本特性:“原子性”,“一致性”,“隔离性”,“持久性”

       事务的隔离等级

        事务隔离是指通过某种机制,使并行的多个事务之间的隔离,也就是使这些并行事件的操作不会相互影响。

       

       事务隔离副作用:

1、脏读:一个事务读取另一个未提交的事务

2、不可重复读:当一个事务再次读取曾经读过的数据时,发现要读取的数据已经被另一个事务修改。

3、幻读:一个事务重复执行一个查询,但返回的记录中包括其他事务提交的新内容。

   

      增对隔离的副作用标准的SQL定义4种隔离等级

1、未提交读:最低等级的事务隔离,它仅仅是保证在读取数据过程中不会读取到非法的数据。

2、已提交读:此级保证下一个事务不会读到另一个事务已经修改,但尚未提交的数据。

3、可重复读:此级可以避免“脏读”和"不可重复读".也就是说,使用这种隔离机制后,一个事务不可能更新另一个事务修改但尚未提交(回滚)数据

4、可序列化:最高级别隔离。原理:所有的事务都在一个执行队列中,依次序执行,而不是并行。

 

第二节:锁

         在Hibernate框架中支持两种锁机制:悲观锁和乐观锁

        悲观锁:一般依赖于数据库本身的锁机制。当然,也只有依赖于数据库本身的锁机制,才能真正的将数据锁住。

    

        在Hibernate框架中使用Query接口的setLockMode来获得悲观锁、

        Hibernate支持的六种悲观锁,请自行查询相关资料。

 

    乐观锁:乐观锁一般是基于数据版本实习的,因此,对于同一个应用程序,它可以很好的实习乐观锁。

     所谓的数据版本,就是在表中建立一个version字段,字段的类型是基本数据类型。当一个事务中持久化某个对象时,并修改响应的属性值后,会将当前版本号(Versions属性值)和数据表的Version的值进行比较,如果当前版本号大于version字段值,就正常更新记录,否则提交请求被拒绝。

 

 

 

第三节 查询缓存

如果程序中多次执行完全相同的SQL语句,而每次执行时Hibernate都会到数据库查询,这样降低系统的性能,因此,Hibernate提供查询缓存来解决这个问题

第一步:配置文件添加相关类和属性

<hibernate-configuration>
<session-factory>
<property name="cache.use_query_cache"/>
<property name="cache.provider_class">org.ibernate.cache.HashtableCacheProvider</property>
</session-factory>
</hinernate-configuration>


 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值