在persistence.xml中的Netbeans中有一个名为“Use Java Transaction API”的复选框,它会改变xml:
<persistence-unit name="PUNAME-PU" transaction-type="RESOURCE_LOCAL">
要:
<persistence-unit name="PUNAME-PU" transaction-type="JTA">
这是针对CMT还是BMT?
答案 0 :(得分:2)
以下是JPA2规范对此属性的说明:
transaction-type属性用于指定实体是否 管理者为实体经理工厂提供的持久性 单位必须是JTA实体经理或资源本地实体经理。 此元素的值为JTA或RESOURCE_LOCAL。交易类型 JTA假定将提供JTA数据源 - 或者作为 由jta-data-source元素指定或由容器提供。 通常,在Java EE环境中,是一种事务类型 RESOURCE_LOCAL假定将提供非JTA数据源。在 Java EE环境,如果未指定此元素,则为默认值 是JTA。在Java SE环境中,如果未指定此元素, 默认值为RESOURCE_LOCAL。
以下是关于JTA和资源本地实体经理的说法:
JTA EntityManagers
其交易受到控制的实体经理 通过JTA是JTA实体经理。 JTA实体经理参与 在当前的JTA事务中,它是在外部开始和提交的 到实体管理器并传播到底层资源 管理器。
资源本地EntityManagers
交易所在的实体经理 应用程序通过EntityTransaction API控制的是一个 资源本地实体经理。资源本地实体管理器 事务通过资源映射到资源事务 持久性提供者。资源本地实体经理可以使用 服务器或本地资源连接到数据库并且不知道 是否存在可能有效或无效的JTA交易。