Hibernate的事务和并发控制很容易掌握。Hibernate直接使用JDBC连接和JTA资源,不添加任何附加锁定 行为。我们强烈推荐你花点时间了解JDBC编程,ANSI SQL查询语言和你使用 的数据库系统的事务隔离规范。

Hibernate不锁定内存中的对象。你的应用程序会按照你的数据库事务的隔离级别规定的那样运作。幸亏有了Session,使得Hibernate通过标识符查找,和实体查询(不是返回标量值的报表查询)提供了可重复的读取(Repeatable reads)功能,Session同时也是事务范围内的缓存(cache)。

除了对自动乐观并发控制提供版本管理,针对行级悲观锁定,Hibernate也提供了辅助的(较小的)API,它使用了 SELECT FOR UPDATE的SQL语法。本章后面会讨论乐观并发控制和这个API。

我们从Configuration层、SessionFactory层, 和 Session层开始讨论Hibernate的并行控制、数据库事务和应用 程序的长事务。

11.1. Session和事务范围(transaction scope)

11.2. 数据库事务声明

11.3. 乐观并发控制(Optimistic concurrency control)

11.4. 悲观锁定(Pessimistic Locking)

11.5. 连接释放模式(Connection Release Modes)