我正在准备一些使用JPA 2.0、Hibernate作为提供程序、MySQL 5作为数据库的应用程序,这些应用程序将部署在JBoss as 7.0.2上。
我已经在persistence.xml中配置了一些基础知识,我遇到了一些麻烦。我注意到,有些人还在JBoss管理控制台级别定义了一些特定的DataSource
我的问题是,我真的需要担心Hibernate应用程序中的一些DataSource或类似的东西吗
我认为它在旧JDBC方法中很重要
在一些有示例的书中,persistence.xml或hibernate.cfg.xml中没有这样的配置
我必须将mysql连接器放在JBOSS_HOME/stalone/deploments目录中才能在我的应用程序中使用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>
好吧,您可以通过以下方式访问数据库:
- 提供url/driver/password/等。
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>
您现在实际要做的(使用这些属性(是使用JDBC。
我肯定会在ApplicationServer中创建数据源,而不是在persistence.xml
的属性中提供它。它允许您动态更改最终数据库、类型、凭据、管理连接池等,甚至无需触摸描述符。
它也更安全,因为凭据不会写在服务器上的普通文件中。
附带说明一下,请记住,javax.persistence.jdbc.*
属性是Java SE环境的JPA提供程序必须要求,但对于Java EE来说,它是可选的。
希望能有所帮助!
是否必须将mysql连接器放入JBOSS_HOME/standalone/deploments目录中使用MySQL应用
是的,您需要将MysqlJ/connector用作JDBC驱动程序。您的应用程序服务器(JBOss、Weblogic、Glassfish等(不提供它,因为这取决于您正在使用的RDBMS(在本例中为Mysql(及其版本
在JBoss7的情况下,JDBC驱动程序可以通过以下两种方式之一安装到容器中:作为部署或作为核心模块。关于这两种模式的优缺点,您可以查看以下文档进行详细说明:http://community.jboss.org/wiki/DataSourceConfigurationInAS7