看了很多篇别人讲的大概理解了(个人理解,只谈大概):
首先整体的事务是由spring管理的,它主要是通过封装管理hibernate的session。但是对事务的操作应该是老大spring叫hibernate干的,最后应该都会走到jdbc。
session:知道了hibernate中有4种状态,那都是对应一个session时,一般操作都不是自己获取session,所以一般不会遇到跟想的不一样的。(如:https://blog.csdn.net/Dug_Zhang/article/details/103100166方式1)
hibernate一级缓存:看了mybatis也有,其实也就是一次链接中有些东西放缓存,查的快,同上(但是一般操作都不是自己获取session,所以一般一级缓存没啥用到地方)。
hibernate二级缓存:这个是真的缓存,一级缓存相当于一次链接内共享,二级相当于存起来,随时用(3级没看)。
所以:一个session只有一个事务一个事务只有一个session,看你的事务定义到那一层,这是jdbc链接那层。而spring管理的一个大事务,那中间n个session也可以吧,但是也是串行的。
所以:最底下,是一个链接一个事务,一个事务一个session,一个session一个链接。(个人观点,无法证实)。
相关文章
- 02-08Hibernate5 与 Spring Boot2 最佳性能实践
- 02-08struts2针对mvc的框架 spring针对解耦与事务的框架
- 02-08SSH中将hibernate托管给spring获取session的方法
- 02-08Spring事务使用篇:学习spring事务传播机制的7种姿势
- 02-08Spring4+Hibernate4事务小记
- 02-08云笔记项目-Spring事务学习-传播REQUIRES_NEW
- 02-08Spring5学习笔记(14) — “Spring5 声明式事务管理”
- 02-08Spring框架学习笔记(6)——bean的继承与依赖
- 02-08Spring对Hibernate事务管理【转】
- 02-08Hazelcast与Ehcache Hazelcast使用Spring和Hibernate在service / dao层缓存注释?