12.4. 持久性上下文
Jakarta Persistence 持久上下文包含由持久提供商管理的实体。持久上下文充当第一级别的事务缓存,以便与数据源交互。它管理实体实例及其生命周期。加载的实体在返回到应用之前被置于持久上下文中。实体更改也会置于持久性上下文中,以便在交易提交时保存到数据库中。
容器管理的持久性上下文的生命周期可以限定为事务(称为事务范围的持久性上下文),或者具有超过单个事务(称为扩展持久性上下文)的生命周期范围。PersistenceContextType
属性(具有 枚举
数据类型)用于为容器管理的实体管理器定义持久性上下文生命周期范围。持久上下文生命周期范围是在创建 实体管理器
实例时定义的。
12.4.1. transaction-Scoped Persistence Context
事务范围的持久性上下文与活跃的 Jakarta Transactions 事务配合。事务提交时,持久性上下文刷新到数据源;实体对象会被分离,但可能仍被应用代码引用。预期要保存到数据源的所有实体更改必须在交易期间进行。当实体 管理器调用完成后,会在事务之外读取的实体
分离。
12.4.2. 扩展持久性上下文
扩展的持久性上下文跨越多个事务,允许数据修改排队而无需活跃的 Jakarta Transactions 事务。容器管理的扩展持久性上下文只能注入有状态会话 Bean 中。