10


我正在准备一些使用 JPA 2.0、Hibernate 作为提供者、MySQL 5 作为数据库的应用程序,它将部署在 JBoss AS 7.0.2 上。
我已经在persistence.xml 中配置了一些基础知识,但遇到了一些麻烦。我注意到有些人还在 JBoss 管理控制台级别定义了一些特定的数据源。
我的问题是。我真的需要担心 Hibernate 应用程序中的一些 DataSource 或类似的东西吗?
我认为这在旧的 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>
4

2 回答 2

11

好吧,您可以通过以下方式访问数据库:

  • 提供 url/驱动程序/密码/等。persistence.xml使用您的 jpa-provider 属性(在您的情况下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是可选的。

希望有帮助!

于 2011-11-16T22:16:23.483 回答
3

我是否必须将 mysql 连接器放入 JBOSS_HOME/standalone/deployments 目录才能在我的应用程序中使用 MySQL?

是的,您需要将 Mysql J/connector 用作 JDBC 驱动程序。您的应用程序服务器(JBOss、Weblogic、Glassfish 等)不提供它,因为这取决于您使用的 RDBMS(在本例中为 Mysql)及其版本。

对于 JBoss 7,JDBC 驱动程序可以通过以下两种方式之一安装到容器中:作为部署或作为核心模块。对于两种模式的优缺点,您可以查看以下文档:http: //community.jboss.org/wiki/DataSourceConfigurationInAS7

于 2011-11-17T01:41:38.700 回答