2012-02-17 100 views
1

我下載了一個使用Hibernate和JPA的示例應用程序,問題是持久性單元。看來我可以使用從我的研究,我發現,如果我使用的第一個我也有指定<non-jta-data-source><persistence-unit name="hibernatePersistenceUnit" transaction-type="RESOURCE_LOCAL"><persistence-unit name="hibernatePersistenceUnit" transaction-type="JTA"> 與第二<jta-data-source>(我認爲這是正確的,但糾正我,如果我錯了)如何正確使用LocalContainerEntityManagerFactoryBean和JPA

我認爲第一個意味着網址,驅動程序,用戶,密碼將在網絡應用程序內配置。第二個將通過容器中的JNDI查找源代碼(如果我錯了,再次糾正我) 但是,我需要爲該屬性指定的值是我的絆腳石。 我見過jdbc:sampleDS,java:sampleDS。 (這些也是jndi查找嗎?沒有看到jndi:sampleDS)所以應該是jdbc:或者java:或者jndi:這些都是「JNDI」嗎?

而「sampleDS」這個名字實際上是指什麼?換句話說,如果我使用resource_local,或者它指向應用程序服務器上的jndi資源(例如JBOSS),還是指向bean名稱(我使用spring和配置數據源信息的我的bean稱爲jpaDataSource),或者我還沒有意識到的其他事情?

+0

沒有違法,但這在許多層面上incomprehendable。也許你可以專注於提出一個具體問題。 – MaDa 2012-02-17 10:30:31

+0

MaDa,你說的對,我粘貼的一些代碼還沒有渲染。我將編輯帖子。 – 2012-02-20 23:28:15

回答

1

如果您不需要全局事務(跨越多個持久性單元,即數據庫的事務)或JNDI定義的數據源,則使用RESOURCE_LOCAL,如果您需要全局事務,則必須使用JTA,這又要求您在使用JNDI數據源時駐留在可以處理全局事務的應用程序服務器中。

JNDI數據源在應用程序服務器中配置 - 對於配置/ standalone.xml中的JBOSS或deployments文件夾中的* -ds.xml文件。

的java:sampleDS是一個JNDI名稱,例如MSSQL-ds.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<datasources> 
    <datasource jndi-name="java:jboss/datasources/myDatabase" pool-name="myDatabase" enabled="true" jta="true" use-java-context="true" use-ccm="true"> 
    <connection-url> 
     jdbc:sqlserver://localhost;databaseName=myDatabase 
    </connection-url> 
    <driver> 
     sqljdbc 
    </driver> 
    <security> 
     <user-name> 
      myusername 
     </user-name> 
     <password> 
      mypassword 
     </password> 
    </security> 
    </datasource> 
<datasources> 
+0

謝謝你的例子 – 2012-10-11 01:41:28

相關問題