JPA persistence.xml,定义postgresql JTA数据源

时间:2016-05-23 23:52:58

标签: java postgresql jpa datasource jta

我有一个Java应用程序,它使用JDBC连接到Postgres数据库,JPA对它执行操作。我希望使用JTA事务类型,而不是本地事务类型。为此,我需要指定一个数据源。

尽管阅读this thread,我仍然不知道实际放入xml文件的内容,因为我不知道如何检索我的数据源的名称,和/或在何处以及如何定义它。 / p>

当我使用RESOURCE-LOCAL事务类型时,与数据库的连接已经正常运行。我浏览过的很多线程都提到在名为context.xml的文件中定义它。它必须是这个文件吗?由于在创建JDBC数据库连接时没有为我自动生成这样的文件,我需要手动创建它。

简而言之,如果可以通过添加
来获得以下文件 <jta-data-source>something</jta-data-source>,请告诉我这是什么,或者我怎么知道。否则,请告诉我如何以及在何处定义该内容。

<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 

<persistence-unit name="BankingPU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>banking.Splatka</class>
    <class>banking.VlastnikKonta</class>
    <class>banking.FyzickaTransakce</class>
    <class>banking.Klient</class>
    <class>banking.PlatebniKarta</class>
    <class>banking.Transakce</class>
    <class>banking.Uver</class>
    <class>banking.Platba</class>
    <class>banking.Konto</class>
    <class>banking.BankovniPrevod</class>
    <class>DB_control.Transakceprevod</class>
    <class>banking.Transakceprevod</class>
    <class>banking.TransakcePrevod</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
      <property name="javax.persistence.jdbc.password" value="xxxx"/>
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
      <property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>   </persistence-unit> </persistence>

1 个答案:

答案 0 :(得分:1)

<jta-data-source>something</jta-data-source>

某些东西将是J2EE环境中数据源的jndi名称。

当您引用任何数据源时,您不需要将以下部分放在persistence.xml中。

<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
  <property name="javax.persistence.jdbc.password" value="xxxx"/>
  <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
  <property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>