Hibernate的事务管理

    事务就是指作为单个逻辑工作单元执行的一组数据操作,这些操作要么全部成功,要么全部失败,以保证数据的一致性和完整性

事务具有以下ACID属性:

A(Atomic)原子性:事务是由一个或者多个行为绑在一起组成,好像是一个单独的工作单元。原子性确保在事务中的所有操作要么都发生,要么不发生。

C(Consistent)一致性:一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。

I(Isolated)隔离性:事务应该允许多个用户操作同一个数据,一个用户的操作不会和其他用户操作相混淆。

D(Durable)持久性:一旦事务完成,事务的记过应该持久化。

    数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志撤销事务对数据库所做的更新,是数据库退回到执行事务的前期初始状态。数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同时更新数据库相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新数据。

      JDBC中使用事务

     在jdbc API中提供了一下方法控制事务。

  1.    setAutoCommit(boolean autoCommit):设置是否自动提交事务
  2.    commit():提交事务
  3.    rollback():撤销事务 
     Hibernate 事务管理

     Hibernate对JDBC进行了轻量级的对象封装,Hibernate本身在设计时并不具备事务处理功能,平时所用的hibernate的事务,只是将底层的JDBCTransaction或者JTATransaction进行封装,在外面套上Transaction和session的外壳,其实底层都是通过委托底层的JDBC或JAT来实现事务的调度功能。

     hibernate使用JDBC事务:在hibernate.cfg.xml中指定使用哪一种事务

<session-factory>
    <property name="hibernate.transaction.factory_class">
     org.hibernate.transaction.JDBCTransactionFactory
</session-factory>
     hibernate使用JTA事务:
<session-factory>
    <property name="hibernate.transaction.factory_class">
     org.hibernate.transaction.JTATransactionFactory
</session-factory>

      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值