💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 第 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的并行控制、数据库事务和应用 程序的长事务。