我在JPA Hibernate项目中需要DataSource吗?

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)

Pio*_*cki 9

那么,您可以通过以下方式访问数据库:

  • 提供网址/驱动程序/密码/等.在信息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的.

希望有所帮助!