gpt4 book ai didi

java - 使用 hibernate session /JDO persistenceManager 时的 ThreadLocal

转载 作者:行者123 更新时间:2023-11-30 06:00:29 25 4
gpt4 key购买 nike

我试图了解使用 ThreadLocal 解决上述问题的最佳实践。根据我的理解,使用它的原因是为了确保只为整个应用程序创建一个 session /pm。我的问题是

  1. 像这样使用 threadlocal 对集群应用程序有什么影响吗? (例如谷歌应用引擎)?

  2. 如果您在我的应用程序中使用“事务性”开始,提交,我不需要使用 threadlocal 对吗?因为“交易”已经确保我的 session 正确打开和关闭?

  3. 如果我需要使用“事务性”,tx,它也应该在线程本地吗?

  4. 为什么不直接使用“static”而不是“threadlocal”?

我有兴趣听听大家关于使用此技术的优点/缺点的反馈吗?

最佳答案

  1. 可能不会,除非您的集群软件可以在节点之间迁移线程。在这种情况下,您还需要迁移线程本地数据。

  2. 没有。事务附加到 session ,因此您必须保持两者同步。虽然您可以在线程 A 中开始一个事务并在线程 B 中提交它,但通常很难确保它可靠地工作。因此:不要。

  3. 是。

  4. static 对整个应用程序是全局的。 threadlocal 是每个线程的全局。

结论:如果你是这方面的初学者,我建议使用Spring . Spring 框架为您解决了许多问题,并在出现问题时帮助您提供有用的错误消息。

严格按照文档进行操作,尤其是当它没有意义时。您很可能错过了一些重要的东西,而 Spring 的人是对的。

关于java - 使用 hibernate session /JDO persistenceManager 时的 ThreadLocal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288541/

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