Hibernate(五)

Hibernate中的事务管理:

在Hibernate的配置文件中对事务进行配置,配置文件Hibernate.cfg.xml中,可以设置事务的隔离级别。

事务的隔离级别:

hibernate.connection.isolation=4

1----Read  uncommitted  isolation

2----Read  committed  isolation

4----Repeatable  read  isolation

8----Serializable  isolation

在Hibernate.cfg.xml中进行如下配置:

Hibernate解决Service的事务管理:

事务控制不应该是在DAO层实现的,应该在Service层实现,并且在Service中调用多个DAO实现一个业务逻辑的操作。所以如何保证在Service中开启的事务时使用的Session对象和DAO中多个操作使用的是同一个Session对象。

其中有两种办法可以实现:

*可以在业务层获取到Session,并将Session作为参数传递给DAO

*可以使用ThreadLocal将业务层获取的Session绑定到当前线程中,然后在DAO中获取Session的时候,都从当前线程中获取。

其中第二种是最优方案,在Hibernate内部已经将这个事情做完了,我们只需要完成一段配置即可。

Hibernate5中自身提供了三种管理Session对象的方法:

*Session对象的生命周期与本地线程绑定

*Session对象的生命周期与JTA事务绑定

*Hibernate委托程序管理Session对象的生命周期

在Hibernate的配置文件中,hibernate.current_session_context_class属性用于指定Session管理方式,可选值包括

*thread:Session对象的生命周期与本地线程绑定

*jta:Session对象的生命周期与JTA事务绑定

*managed:Hibernate委托程序来管理Session对象的生命周期

Hibernate提供sessioniFactory.getCurrentSession()创建一个session和ThreadLocal绑定。

在HibernateUtils工具类中更改getCurrentSession方法:

public static Session getCurrentSession() {
		return sf.getCurrentSession();
}

配置完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值