一、项目背景
单体服务拆分微服务架构
二、框架情况
单体: spring、springmvc、hibernate5
微服务:springboot、JPA
从本质上来说JPA就是个壳,底层还是用的hibernate5。但是项目组要求用jpa的方式去改造微服务。
三、最大的问题
hibernate5和jpa的查询方式管理不一样了,导致原有单体的dao层数据想要复用的话需要改造。
hibernate5:session去操作sql.
jpa:使用EntityManager操作sql.
四、EntityManager
EntityManager能操作sql,那么就能获取session.最终通过EntityManager的unwrap去获取session即可。
五、获取session报错,说是没有事务。。。。。。
在方法上加了@transactional不起作用,后来在类上面加可以了@transactional