gpt4 book ai didi

hibernate - 是否可以将DataSourceTransactionManager用于ORM持久性而不是HibernateTransactionManager?

转载 作者:行者123 更新时间:2023-12-04 08:14:27 26 4
gpt4 key购买 nike

我正在调试我们的webapp。它被配置为在启动时创建DataSourceTransactionManager bean和HibernateTransactionManager bean。这不是故意的,而是由第三方依赖性引起的。效果似乎是良性的。我通过调试看到的是,当我们通过基于Hibernate的DAO持久化对象时,将调用DataSourceTransactionManager而不是HibernateTransactionManager(两个bean都称为“transactionManager”)。 Spring Javadoc暗示(我认为,现在重新阅读)对本地资源来说是很好的-这就是我们的情况。 IE。它不是基于JTA的分布式环境。
我的问题是-对基于ORM的持久性不使用HibernateTransactionManager是否有负面影响?我可以更改配置,以通过DAO上@Transactional批注上的限定符来使用HibernateTransactionManager。
在简单的单元测试,集成测试设置中,一切工作正常,但是当我们有成千上万的用户和高度的并发性时,我更关心的是扩展到完整的生产量。
TIA,
希望这不是太晦涩。
Spring 3.0.x BTW。
这是在Spring 3.1文档中。

Sec 11.9 "Solutions to Common Problems".

Use the correct PlatformTransactionManager implementation based onyour choice of transactional technologies and requirements.

最佳答案

这将使我感到错误,并会引起问题。如果没有 hibernate 的txn管理器,则对HibernateOperations的所有调用都将在事务外部并在单独的 session 中进行,可能使用自动提交。因此,当发生错误时,一切似乎都很好,您可能会发现并没有希望回滚的更改。

尝试以下检查

  • 开始转换
  • 保存一些内容
  • 引发异常
  • 提交

  • 检查“内容”是否出现在数据库中。

    另一张支票是
  • 开始转换
  • 加载一些东西
  • 从某事物访问与另一个对象的关系,并访问此相关对象的属性(而不是pk)

  • 您可能会发现最后一次调用导致了异常,因为 session 没有从负载中保持打开状态,因为封闭的txn不受 hibernate txn管理器的管理。

    关于hibernate - 是否可以将DataSourceTransactionManager用于ORM持久性而不是HibernateTransactionManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122409/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com