2012-02-17 69 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

相关问题