hibernate 入门
SessionFactory
bean 负责创建,维护,关闭和刷新 TransactionManager
要求创建的所有数据库会话。这就是为什么我们将 SessionFactory
自动装入 DAO 并通过它运行所有查询。
新 Hibernate 用户提出的最大问题之一是“我的更改何时会被提交?” 当你想到 TransactionManager
如何与 SesisonFactory
一起工作时,答案才有意义。退出使用 @Transactional
注释的服务方法时,将刷新并提交你的数据库更改。这样做的原因是,交易应该代表一个不间断工作的单一单位。如果设备出现问题,则假设设备发生故障并且所有更改都应该回滚。因此,当你退出最初调用的服务方法时,SessionFactory
将刷新并清除会话。
这并不是说在交易进行时它也不会刷新和清除会话。例如,如果我调用一个服务方法来添加一个包含 5 个对象的集合并返回数据库中对象的总数,则 SessionFactory
会意识到查询(SELECT COUNT(*)
)要求更新状态是准确的,因此会刷新在运行计数查询之前添加 5 个对象。执行可能看起来像这样: