很抱歉,如果之前已经回答了这个问题,但我听说(来自潜在的其他菜鸟)Hibernate已经/有某种连接池管理器,它也处理数据库的锁定。现在我读到这在Hibernate 3中被废除了所以我作为一个菜鸟,我很困惑该使用什么。
我有一个Postgresql数据库,其中包含多个客户端,每个客户端都使用max。在任何给定时间一个数据库连接。我使用JDBC但想转移到Hibernate。
因此,如果发生两个并发更新操作,我不知道这是否由DBMS正确处理。我想过手动锁定数据库表,以防有人对它进行操作,但必须有更好的方法。
我只使用简单的单个sql语句,有时是预处理语句。没有大的更新,只有单行更新。
你知道这一般是如何解决的吗?这甚至是个问题吗?
答案 0 :(得分:2)
这对于一个真正有用的答案来说太笼统了,我真的应该对它进行近距离投票。但我会尽力帮忙。
连接池与锁定无关。这两个是不相关的主题。
我认为你模糊地试图在Hibernate中引用乐观并发控制。这是正常行锁定的替代策略,具有不同的优点和缺点。
有关详情,请参阅the Hibernate documentation和wikipedia article on optimistic concurrency control。
我还写了a recent blog entry on this topic可能有用。
但最重要的是,实际理解应用程序和数据库中的并发性是无可替代的。我非常强烈建议您详细阅读concurrency control 上的PostgreSQL文档章节。