JPA事务和hibernate混合事务研究<一>
2016-11-03 17:28
288 查看
混合事务用起来确实是比较麻烦的事情,我也百度了下,基本上只看见了关于jdbc事务和jpa事务(hibernate事务)混合事务的介绍,以及用法,
但是就是没有看到jpa事务和hibernate混合事务的用法说明的博客或者文章。
关于JPA和hibernate我就不详细介绍了,理论上来说JPA是规范,hibernate是其实现,混合起来使用应该没有那么麻烦,但是混合起来是个什么样的效果呢。
这个还得研究,下面跟我一起来以代码为主进行分析研究。
首先,得分两种大类型的情况,如下:
1.在hibernate事务中加入jpa事务的service
2.在jpa事务中加入hibernate事务的service
首先分析第二种情况吧,在JPA事务中嵌套hibernate事务,这种情况也分为了两种类型:
1.hibernate事务的配置就直接使用jpa的事物管理器
配置了JPA的事物管理器
JPA的事物使用注解配置
接下来配置hibernate的事物,我用的是AOP的方式配置的hibernate的事物,直接引用JPA的事物管理器
编写hibernate事物的service
然后编写JPA事物的service
可以看到,tomcat正常启动是没有问题的,接下来,调用下服务,看会出现什么问题?
异常正常抛出,事物也正常回滚,查看数据库,记录也没有保存进去,这种情况很nice哦,注释掉异常,看记录能否保存进去?
后台没有异常,数据也可以正常保存成功,说明这种配置是OK的,当然没有经过大量测试,仅限本次研究中。有兴趣的网友可以多做点测试哦。
今天就到这里吧,要下班了。剩下的几种情况到后面均会放出。后期还会研究下原代码,好做下分析。
但是就是没有看到jpa事务和hibernate混合事务的用法说明的博客或者文章。
关于JPA和hibernate我就不详细介绍了,理论上来说JPA是规范,hibernate是其实现,混合起来使用应该没有那么麻烦,但是混合起来是个什么样的效果呢。
这个还得研究,下面跟我一起来以代码为主进行分析研究。
首先,得分两种大类型的情况,如下:
1.在hibernate事务中加入jpa事务的service
2.在jpa事务中加入hibernate事务的service
首先分析第二种情况吧,在JPA事务中嵌套hibernate事务,这种情况也分为了两种类型:
1.hibernate事务的配置就直接使用jpa的事物管理器
配置了JPA的事物管理器
JPA的事物使用注解配置
接下来配置hibernate的事物,我用的是AOP的方式配置的hibernate的事物,直接引用JPA的事物管理器
编写hibernate事物的service
@Service("wfClientService") public class WfClientServiceImpl implements IWfClientService { @Override public void saveRolePart(RolePart rolePart) throws BizProcessException { rolePartDao.saveRolePart(rolePart); //这里抛出异常,看是否可以正常回滚 throw new BizProcessException("测试事物回滚"); } }
然后编写JPA事物的service
@Service @Transactional(value="transactionManager", rollbackFor=java.lang.Exception.class) public class MessageSelectedServiceImpl extends BaseServiceImpl<MessageSelected> implements IMessageSelectedService { //测试jpa和hibernate混合事务 @Override public void testMixTransation() throws BizProcessException { RolePart rolePart = new RolePart(); rolePart.setRoleId("hhh" + new Random().nextInt(1000)); rolePart.setPartId("ccc" + new Random().nextInt(1000)); //这里调用hibernate的AOP配置的事物的service方法 wfClientService.saveRolePart(rolePart); } }事物配置好了,service代码也写好了,然后启动服务,看下能否回滚,还是直接启动就报错了呢?
可以看到,tomcat正常启动是没有问题的,接下来,调用下服务,看会出现什么问题?
异常正常抛出,事物也正常回滚,查看数据库,记录也没有保存进去,这种情况很nice哦,注释掉异常,看记录能否保存进去?
后台没有异常,数据也可以正常保存成功,说明这种配置是OK的,当然没有经过大量测试,仅限本次研究中。有兴趣的网友可以多做点测试哦。
今天就到这里吧,要下班了。剩下的几种情况到后面均会放出。后期还会研究下原代码,好做下分析。
相关文章推荐
- STM32系统中应用的动态加载可行性研究过程<一>
- Cocos2d-X内存管理研究<一>
- Redis 研究记录<一>
- linux 内核研究<一> 1.2
- JPA开发总结<一>
- Hibernate<一>一款工作在持久化层的大型、开源、免费的ORM框架
- JPA学习与应用<一>
- hibernate 基本步骤 <一>
- Cocos2d-x内存管理研究<一>(转载特兹卡特的百度空间)
- Hibernate 和 JPA 出了什么问题 <文章转自开源中国>
- Cocos2d-X内存管理研究<一>
- Kafka组件研究<一>----组件介绍
- Android Layout研究 <一> 基础知识
- Cocos2d-X内存管理研究<一>
- Spring-hibernate-事务处理详解及案例<六>
- Cocos2d-X内存管理研究<一>
- struts+spring+hibernate的web应用<一> 架构搭建
- 研究网狐读取数据库字段<一>
- VC和Matlab混合编程之调用Engine引擎方式<一>
- Hibernate<一> 介绍及基础应用