与 JPA(Hibernate) 的 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 数据源? 如果是强制性的请告诉我为什么? 如果不是我需要做什么?
我正在尝试使用 glassfish 配置应用程序,并且在外部数据源(在 glassfish 中配置)下一切正常,但我想在 spring 中并在属性的帮助下配置所有内容。
有什么解决办法吗?
If I use in persistence.xml a transaction-type="RESOURCE_LOCAL" then I can avoid using a non-jta-data-source by using the properties:
<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>
The question is if I use a transaction-type="JTA" then is mandatory to use a jta-data-source ?
If is mandatory please tell me why ?
If not what I need to do ?
I am trying to configure an application with glassfish and everything works fine with an external datasource (configured in glassfish), but I would like to configure everything in spring and with the help of properties.
Any solution for this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于
JTA
事务类型,您必须定义
。但如果您使用RESOURCE_LOCAL
(非 JTA),则它是
。如果未指定,JTA 是默认事务类型。这些元素用于指定数据源,通常是用于引用数据源的全局 JNDI 名称。
JTA中的事务可以跨多个持久单元/数据库&外部环境(如 JMS)。通常,
JTA
用于 Java EE 和 Java EE。RESOURCE_LOCAL
用于 Java SE 环境。For
JTA
transaction type, you have to define<jta-data-source>
. But if you are usingRESOURCE_LOCAL
(non-JTA), then it is<non-jta-data-source>
.JTA is the default transaction type, if none is specified. These element is used to specify the data source, generally a global JNDI name for referencing the data source.
Transaction in JTA can traverse across multiple persistent units/databases & external environment (like JMS). Typically,
JTA
is used in Java EE &RESOURCE_LOCAL
is used in Java SE environment.