使用Hibernate Callback的优势?

使用Hibernate Callback的优势?,第1张

使用Hibernate Callback的优势?

就您为什么使用

HibernateCallback
。简短答案-
它允许您访问当前的事务绑定会话,以执行更复杂的hibernate功能。在大多数情况下,使用简单的方法就
HibernateTemplate
足够了,但是有时您需要使用
Session

这个难题有两个部分。

第一个是通过使用

PlatformTransactionManager
/
TransactionTemplate
OR
@Transactional
注释定义的事务范围。有关更多信息,请参见spring docs / google。

第二个是,当您处于事务中时,

HibernateTemplate
将使用一些魔术与当前事务进行交互。

因此,像这样的简单 *** 作

hibernateTemplate.save()
将参与交易。像您的示例这样更复杂的事务也将参与事务。实际上,hTemplate上的几乎任何方法都会参与。

因此,请问您有关会话何时关闭的问题

  • 如果您显式使用事务,请参见上面的第一点,然后在事务作用域关闭时,将提交事务,并关闭会话。
  • 如果没有事务,spring每次您调用一个
    HibernateTemplate
    方法都会为您创建一个会话,然后立即关闭它。这不是首选方法,因为除非您执行非常简单的 *** 作,否则结果将与会话分离,并且您将获得LazyInit异常。

在上面第二种情况下要注意的重要一点是,没有显式事务。您受连接的自动提交模式的支配,因此您可能会在回调中执行保存,保存,引发异常的 *** 作。第一次保存可能已提交,没有交易就无法保证。

我的建议是在进行任何更新时都使用事务。

如果您对交易的所有内容都不熟悉,请查看spring文档以获取交易章节。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5047948.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存