sessionfactory.openSession() 和 sessionfactory.openStatelessSession() 之间的区别?

2022-09-03 06:56:42

我想知道上面提到的两种方法之间的概念差异,如果可以通过简单的例子来表示hibernates sessionfactory类。


答案 1

前者打开正常(有状态)会话,而后者(可能并不奇怪)打开无状态会话

根据Javadoc的说法,无状态会话是:

面向命令的 API,用于对数据库执行批量操作。

无状态会话不实现一级缓存,也不与任何二级缓存交互,也不实现事务性写后写或自动脏校验,操作也不会级联到关联的实例。无状态会话忽略集合。通过无状态会话执行的操作会绕过 Hibernate 的事件模型和拦截器。由于缺少第一级缓存,无状态会话容易受到数据别名影响。

对于某些类型的事务,无状态会话的执行速度可能比有状态会话稍快。


答案 2

推荐