spring3+hibernate4配置事务管理以及session获取问题。

目标:把事务管理托管给spring3

出现的问题:hibernate通过sessionFactory.getCurrentSession()获取的session在执行sql时,总是回滚。

问题原因:hibernate4比hibernate3的几点变化,一是hibernate4所有session必须都放入事务中,

                    二是如果要把事务托管给spring3,需要设置该参数

hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>

         三是事务管理器声明:<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" > 

最后:依照上面三点进行修改,采用spring注解方式声明事务,

      1.在配置文件中加<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />

      2.在dao使用session的方法前家@Transactional,该注解默认为propagation=Propagation.REQUIRED,即在需要时创建事务。

           3.在dao中注入sessionFactory,

           4.在dao方法中,获取session: 

                  Session session = sessionFactory.getCurrentSession();
OrgInfoDomain orgInfoDomain = (OrgInfoDomain) session.createQuery("from OrgInfoDomain as orgInfoDomain where orgInfoDomain.orgno = ?").setString(0, orgno).uniqueResult();

          直接使用,不需要beginTransaction和commit。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值