使用JPA(Hibernate)的JTA事务

时间:2012-02-08 16:18:14

标签: hibernate jpa jta

如果我在persistence.xml中使用了transaction-type =“RESOURCE_LOCAL”,那么我可以通过使用属性来避免使用非jta-data-source:

<properties>
  <property name="hibernate.bytecode.use_reflection_optimizer" value="false"/>
  <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
  <property name="hibernate.connection.password" value="passsample"/>
  <property name="hibernate.connection.url" value="jdbc:oracle:thin:urlsample"/>
  <property name="hibernate.connection.username" value="usersample"/>
  <property name="hibernate.default_schema" value="schemasample"/>
  <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>        
</properties>

问题是如果我使用transaction-type =“JTA”那么必须使用jta-data-source? 如果是强制性的请告诉我原因? 如果不是我需要做什么?

我正在尝试使用glassfish配置应用程序,一切都可以正常使用外部数据源(在glassfish中配置),但我想在spring中配置所有内容并在属性的帮助下。

对此有何解决方案?

1 个答案:

答案 0 :(得分:1)

对于JTA交易类型,您必须定义<jta-data-source>。但是,如果您使用的是RESOURCE_LOCAL(非JTA),那么它是<non-jta-data-source>

如果未指定,则JTA是默认事务类型。这些元素用于指定数据源,通常是用于引用数据源的全局JNDI名称。

JTA中的事务可以遍历多个持久性单元/数据库&amp;外部环境(如JMS)。通常,JTA用于Java EE&amp; {SE}环境中使用RESOURCE_LOCAL