第 11 章 事务和并发

目录

  • 11.1. Session和事务范围(transaction scope)
    • 11.1.1. 操作单元(Unit of work)
    • 11.1.2. 长对话
    • 11.1.3. 关注对象标识(Considering object identity)
    • 11.1.4. 常见问题
  • 11.2. 数据库事务声明
    • 11.2.1. 非托管环境
    • 11.2.2. 使用JTA
    • 11.2.3. 异常处理
    • 11.2.4. 事务超时
  • 11.3. 乐观并发控制(Optimistic concurrency control)
    • 11.3.1. 应用程序级别的版本检查(Application version checking)
    • 11.3.2. 扩展周期的session和自动版本化
    • 11.3.3. 脱管对象(deatched object)和自动版本化
    • 11.3.4. 定制自动版本化行为
  • 11.4. 悲观锁定(Pessimistic Locking)
  • 11.5. 连接释放模式(Connection Release Modes)

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的并行控制、数据库事务和应用 程序的长事务。