【问题标题】:Synchronization and hibernate同步和休眠
【发布时间】:2015-07-28 16:17:58
【问题描述】:

我有一个带有休眠功能的应用程序。有两个主线程,第一个是收集/修改数据,第二个是保存数据到数据库,在某些情况下程序可能会尝试同时修改和保存实体。

我必须使所有实体线程安全(仅使用同步集合、原子对象而不是原语...)还是 hibernate 自动处理它?

【问题讨论】:

  • 每次对话都需要一个 Hibernate 会话。您不应该在线程之间共享会话,因此不需要同步实体。
  • 如果我需要在会话期间保存数据,我必须同步我的实体?
  • 我给你的建议是花点时间阅读本书Java Persistence with Hibernate。但是,如果您每个对话有一个会话而不是同步,那么简短的回答对您没有帮助,因为来自一个会话的实体与另一个会话的实体不同,即使它们引用相同的数据库记录也是如此。在这些情况下,您需要以不同的方式解决问题,使用乐观或悲观锁定。但正如你可以猜到的,这在这里很难解释。去读那本书,它比在这里问任何问题都对你有帮助。

标签: java multithreading hibernate


【解决方案1】:

Hibernate 会在每个会话中实例化对象,因此不需要经典同步(也不会有帮助)。

处理并发数据访问和修改的最常见方法是使用locks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多