Hibernate 如何在JPA中正确使用LocalContainerEntityManagerFactoryBean
我下载了一个使用Hibernate和JPA的示例应用程序,问题是持久化单元。似乎我可以使用Hibernate 如何在JPA中正确使用LocalContainerEntityManagerFactoryBean,hibernate,jpa,datasource,jndi,jta,Hibernate,Jpa,Datasource,Jndi,Jta,我下载了一个使用Hibernate和JPA的示例应用程序,问题是持久化单元。似乎我可以使用或 从我的研究中,我发现如果我使用第一个,我还必须指定,第二个(我认为这是对的,但如果我错了,请纠正我) 我认为第一个意味着url、驱动程序、用户、pwd将在web应用程序中配置。第二个将通过容器中的JNDI查找源代码(如果我错了,请再次更正) 但我需要为该属性指定的值是我的绊脚石。 我看过jdbc:sampleDS,java:sampleDS。(这些也是jndi查找吗?还没有看到jndi:sampleDS
或
从我的研究中,我发现如果我使用第一个,我还必须指定
,第二个
(我认为这是对的,但如果我错了,请纠正我)
我认为第一个意味着url、驱动程序、用户、pwd将在web应用程序中配置。第二个将通过容器中的JNDI查找源代码(如果我错了,请再次更正)
但我需要为该属性指定的值是我的绊脚石。
我看过jdbc:sampleDS,java:sampleDS。(这些也是jndi查找吗?还没有看到jndi:sampleDS)那么应该是jdbc:还是java:还是jndi:这些都是“jndi”呢
“样本”这个名字实际上指的是什么?换句话说,如果我使用resource_local,它是指一个bean名称(我使用的是spring,配置数据源信息的bean称为jpaDataSource),还是指应用服务器上某处的jndi资源,例如JBOSS,或者其他我不知道的东西?如果您不需要全局事务(跨多个持久性单元的事务,即数据库)或JNDI定义的数据源,请使用本地资源,如果您需要全局事务,则必须使用JTA,而JTA又要求您使用JNDI数据源,因为它们位于可以处理全局事务的应用程序服务器中 JNDI数据源是在应用程序服务器中配置的——对于JBOSS,可以在configuration/standalone.xml中配置,也可以在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>
jdbc:sqlserver://localhost;databaseName=myDatabase
sqljdbc
我的用户名
我的密码
资源\u如果您不需要全局事务(跨多个持久性单元的事务,即数据库)或JNDI定义的数据源,请使用本地资源,如果您需要全局事务,则必须使用JTA,而JTA又要求您使用JNDI数据源,因为它们位于可以处理全局事务的应用程序服务器中
JNDI数据源是在应用程序服务器中配置的——对于JBOSS,可以在configuration/standalone.xml中配置,也可以在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>
jdbc:sqlserver://localhost;databaseName=myDatabase
sqljdbc
我的用户名
我的密码
没有冒犯,但这在许多层面上都是无法理解的。也许你可以专注于问一个特定的问题。玛达,你是对的,我的错,我粘贴的一些代码还没有呈现出来。我会编辑这篇文章。无意冒犯,但这在很多层面上都是无法理解的。也许你可以专注于问一个特定的问题。玛达,你是对的,我的错,我粘贴的一些代码还没有呈现出来。我会编辑这篇文章。