riv*_*ket 9 mysql hibernate datasource jpa-2.0 jboss7.x
我正在准备一些应用程序,使用JPA 2.0,Hibernate作为提供程序,MySQL 5作为数据库,它将部署在JBoss AS 7.0.2上.
我已经在persistence.xml中配置了一些基础知识,但是我遇到了一些麻烦.我注意到有些人还在JBoss管理控制台级别定义了一些特定的DataSource.
我的问题是.我是否真的需要担心一些DataSource或Hibernate应用程序中的类似内容?
我认为在旧的JDBC方法中这很重要.
在一些书中,显示了示例,persistence.xml或hibernate.cfg.xml中没有这样的配置
我是否必须将mysql连接器放入JBOSS_HOME/standalone/deployments目录以在我的应用程序中使用MySQL?
这是我的persistence.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="SomeApp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/somedb" />
<property name="hibernate.connection.username" value="" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
那么,您可以通过以下方式访问数据库:
persistence.xml使用JPA提供商属性(在你的情况下hibernate.connection.*)或者JPA 2.0规范javax.persistence.jdbc.*的-这基本上看起来像你张贴的例子,在ApplicationServer中创建数据源,并在persistence.xml(通过它在创建期间提供的JNDI名称)中引用它,它可能看起来与此类似(为简洁起见,没有XML模式定义):
<persistence>
<persistence-unit name="SomeApp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/myDB</jta-data-source>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)你现在正在做的事情(使用这些属性)正在使用JDBC.
我肯定会在ApplicationServer中创建数据源,而不是在属性中提供它persistence.xml.它允许您动态更改最终数据库,类型,凭据,管理连接池等,甚至无需触摸您的描述符.
它也更安全,因为凭据不是写在服务器上的普通文件中.
作为一个侧面说明,请记住,javax.persistence.jdbc.*性能是一个JPA提供商必须要求对Java SE的环境,但它是可选的Java EE的.
希望有所帮助!