`
jxd_zxf
  • 浏览: 231779 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JPA配置persistence.xml

    博客分类:
  • SSH
阅读更多

以前使用JPA的实现是toplink,现在改为hibernate,所以要修改persistence.xml文件,两者的配置有一些不一样,并且在EE环境下面和SE的环境下面也有不一样,还有一点,那就是当persistence.xml里面有些格式出错的时候,虽然出错的不是我们需要的那个单元,但也会使得整个persistence.xml报废。

下面帖的是在SE的环境下面使用toplink和hibernate的实现,两者都写在同一个persistence.xml里面。这样切换起来也方便一些。

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
  <persistence-unit name="TestSSH2PU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <class>com.hadeslee.jpaentity.Department</class>
    <class>com.hadeslee.jpaentity.Person</class>
    <properties>
      <property name="toplink.jdbc.user" value="sa"/>
      <property name="toplink.jdbc.password" value="hadeslee"/>
      <property name="toplink.jdbc.url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testSSH"/>
      <property name="toplink.jdbc.driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
  <persistence-unit name="TestSSH1PU2" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.hadeslee.jpaentity.Department</class>
    <class>com.hadeslee.jpaentity.Person</class>
   <properties>
        <property name="hibernate.connection.driver_class" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
        <property name="hibernate.connection.url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testSSH"></property>
        <property name="hibernate.connection.username" value="sa"></property>
        <property name="hibernate.connection.password" value="hadeslee"></property>
        <property name="hibernate.show_sql" value="true"></property>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"></property>
        <property name="hibernate.current_session_context_class" value="thread"></property>
    </properties>
  </persistence-unit>
</persistence>

 在SE的环境下面,是不能使用容器的JTA的数据源的。并且不能使用
<exclude-unlisted-classes>true</exclude-unlisted-classes>这个属性。
本文重点是记录下两个常用的JPA的实现的配置。目前是在SE环境下的配置。EE环境下面的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
  <persistence-unit name="unit_mssql" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>MobileOAMSSQL</jta-data-source>
    <properties>
      <property name="toplink.ddl-generation" value="create-tables"/>
      <property name="toplink.logging.level" value="FINE"/>
    </properties>
  </persistence-unit>
  
<persistence-unit name="MyApp-ejbPU2" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>MobileOAMYSQL</jta-data-source>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence> 

 


在EE环境下面使用JPA配置就简单了许多,首先他可以把当前模块的CLASS文件都包括进来,不用手工指定。并且也少了很多有关于数据库连接的操作,因为这个时候都是从容器里面去取数据源的。并且此时的事务是由容器去管理的,也就是使用JTA,不再是RESOURCE_LOCAL了。这样在代码里面就不用em.getTransaction().begin();和em.getTransaction().commit()了,并且可以使用注入功能,把EntityManager注入到使用它的地方了。

 

来自于http://spiritfrog.iteye.com/blog/551135

 

配置说明:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns:persistence="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 persistence_1_0.xsd ">


<!-- 
     Name属性用于定义持久化单元的名字 (name必选,空值也合法);
     transaction-type 指定事务类型(可选) 
-->
<persistence-unit name="unitName" transaction-type="JTA">


   <!-- 描述信息.(可选) -->
   <description> </description>
   <!-- javax.persistence.PersistenceProvider接口的一个实现类(可选) -->
   <provider>   </provider>
   <!-- Jta-data-source和 non-jta-data-source用于分别指定持久化提供商使用的JTA和/或non-JTA数据源的全局JNDI名称(可选) -->
   <jta-data-source>java:/MySqlDS</jta-data-source>
   <non-jta-data-source> </non-jta-data-source>
   <!-- 声明orm.xml所在位置.(可选) -->
   <mapping-file>product.xml</mapping-file>
   <!-- 以包含persistence.xml的jar文件为基准的相对路径,添加额外的jar文件.(可选) -->
   <jar-file>../lib/model.jar</jar-file>
   <!-- 显式列出实体类,在Java SE 环境中应该显式列出.(可选) -->
   <class>com.domain.User</class>
   <class>com.domain.Product</class>
   <!-- 声明是否扫描jar文件中标注了@Enity类加入到上下文.若不扫描,则如下:(可选) -->
   <exclude-unlisted-classes/>
   <!--   厂商专有属性(可选)   -->
   <properties>
    <!-- hibernate.hbm2ddl.auto= create-drop / create / update -->
    <property name="hibernate.hbm2ddl.auto" value="update" />
    <property name="hibernate.show_sql" value="true" />
   </properties>
</persistence-unit>
</persistence>

 实例:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">
    
    <!-- 
    persistence-unit name="EjbXmlMappingsPU" // 持久化单元名
    transaction-type="JTA(default)/RESOURCE_LOCAL" // 事务类型
    -->
<persistence-unit name="EjbXmlMappingsPU" transaction-type="JTA">
   <description></description> <!-- 描述 -->
   <provider>oracle.toplink.essentials.PersistenceProvider</provider> <!-- 指定一个持久化提供者 -->
   <jta-data-source>jdbc/MyDataSource</jta-data-source> <!-- 指定JTA数据源 -->
   <non-jta-data-source>jdbc/NonTxMyDataSource</non-jta-data-source> <!-- 指定非JTA数据源 -->
   <mapping-file>META-INF/my_queries.xml</mapping-file> <!-- 指定映射文件 -->
   <mapping-file>META-INF/my_entities.xml</mapping-file>
   <jar-file>my/my-classes.jar</jar-file> <!-- 指定托管类的附加JAR -->
   <class>myclass1</class> <!-- 明确列出的类 -->
   <class>myclass2</class>
   <exclude-unlisted-classes/> <!-- 使本地类不能被加到持久化单元中 -->
   <properties> <!-- 使用提供者属性 -->
    <property name="toplink.logging.level" value="FINE"/>
    <property name="toplink.cache.size.dafault" value="500"/>
   </properties>
</persistence-unit>


</persistence>

 

分享到:
评论

相关推荐

    springMVC+JAP整合出去persistence.xml配置文件

    本教程将详细介绍如何在Spring MVC与JPA的整合中,去除传统的`persistence.xml`配置文件,转而使用属性文件来配置数据源以及DBCP(BasicDataSource)连接池来访问数据库。 首先,我们需要了解Spring MVC和JPA的基本...

    persistence.xml

    “persistence.xml”是JPA规范的一部分,用于配置Java应用程序的数据持久化设置。这个XML文件通常位于项目的“META-INF”目录下,它包含了关于实体类的元数据,以及如何管理和访问这些实体的数据库连接信息。 2. *...

    springMVC+JAP整合彻底摆脱persistence.xml配置文件

    本教程将详细讲解如何通过Spring MVC和JPA的整合,实现无需`persistence.xml`配置文件的数据访问。我们将主要探讨以下几个方面: 1. **Spring MVC介绍**: Spring MVC是Spring框架的一个模块,它提供了模型-视图-...

    JPA 基本jar 文件 附带mysql-`jar文件和persistence.xml配置文件

    Java持久化API(Java Persistence API)是Java平台上的一个标准,用于管理和操作关系数据库中的数据。它简化了对象关系映射(ORM),允许开发者以面向对象的方式处理数据,而无需直接编写SQL语句。JPA通过在Java类和...

    persistence.xml:用于Hibernate-JAVA项目的persistence.xml

    `persistence.xml`是Java Persistence API (JPA)的标准配置文件,它位于项目的`META-INF`目录下。该文件主要负责定义实体类、数据源、事务管理器、持久化单元等关键信息,为Hibernate提供运行时的配置依据。通过合理...

    springMVC+JAP整合简化persistence.xml配置文件

    本文将深入探讨如何利用Spring MVC与JPA进行整合,并通过简化`persistence.xml`配置文件来优化项目结构。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了...

    javax.persistence.Entity 的jar包文件

    1. **配置JPA供应商**:在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加EclipseLink的依赖。 2. **设置数据源**:配置数据库连接信息,如URL、用户名和密码。 3. **实体配置**:在Java类上使用`@Entity...

    javax.persistence.jar

    它允许开发者将Java类与数据库表关联,通过注解或者XML配置文件定义实体类与数据库表之间的映射关系。这样,当处理对象时,JPA会自动处理与数据库相关的CRUD(创建、读取、更新、删除)操作。 在`javax.persistence...

    ejb3-persistence.jar hibernate-annotations.jar

    通过配置部署描述符(如`persistence.xml`),可以指定数据源、实体类、持久化单元等信息,进一步定制持久化行为。 总结来说,`ejb3-persistence.jar`和`hibernate-annotations.jar`是Java企业级开发中的重要组件,...

    在myeclipse中根据表结构生成实体和hbm.xml文件

    在 MyEclipse 中,我们可以使用 Hibernate 根据现有的数据库表结构生成实体和 hbm.xml 配置文件,这样可以避免手动编写 JPA 或 Hibernate 实体类。下面是生成实体和 hbm.xml 文件的步骤: 首先,需要创建一个 JPA ...

    ejb3-persistence.jar

    JPA允许开发者使用面向对象的方式来操作数据库,通过注解(Annotations)和XML配置文件定义对象与数据库表之间的映射。ejb3-persistence.jar中的实现提供了对这些特性的支持,包括: 1. 注解驱动:EJB3.0引入了诸如...

    jboss-web.xml jndi.properties oracle-ds.xml

    在本案例中,"jboss-web.xml"、"jndi.properties"和"oracle-ds.xml"是针对EJB+JPA在JBoss应用服务器中的配置文件,它们各自承担着不同的职责。 首先,"jboss-web.xml"是JBoss特定的Web应用程序部署描述符,它是...

    Hibernate+JPA注解教程.doc

    本教程将详细介绍如何在Java开发环境中利用Hibernate和Java Persistence API(JPA)的注解进行数据持久化操作。首先,我们需要了解开发所需的环境和工具,包括MyEclipse 8.5(内含Hibernate 3.2以上版本)、JDK 5.0...

    Spring和openJPA集成

    2. **配置 OpenJPA**:创建一个 `persistence.xml` 文件,定义持久化单元(Persistence Unit),包括数据库连接信息、实体类等。 ```xml &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...

    Pro.EJB.3.Java.Persistence.API.pdf

    - **ORM支持**:通过注解或XML配置文件,JPA允许开发人员将Java对象映射到关系数据库表。 - **查询语言**:提供了两种查询方式:JPQL(Java Persistence Query Language)和Criteria API。JPQL是一种面向对象的查询...

    Apress.Pro.EJB.3.Java.Persistence.API.pdf

    本书详细介绍了如何配置JPA,包括在Java应用服务器中设置持久化单元(Persistence Unit),以及如何在persistence.xml文件中定义数据源、提供者和其他配置属性。同时,书中还涵盖了事务管理和并发控制,这是多用户...

    Struts2 Spring Jpa 配置测试

    3. **JPA配置**:JPA的配置主要涉及`persistence.xml`文件,它定义了持久化单元,包括数据源、JPA供应商(如Hibernate)、实体类的包名以及其他的持久化属性。同时,Spring需要配置JPA的`...

    spring springmvc jpa配置文件

    在Spring中,我们可以使用`persistence.xml`文件来配置数据源、实体扫描以及JPA供应商。以下是一个简单的例子: ```xml &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...

    hibernate+strut+jpa入门例子.zip

    JPA的`persistence.xml`,声明持久化单元。 3. **Web应用目录结构**:如WEB-INF下的`web.xml`,定义了应用的部署描述符。 4. **测试代码**:JUnit测试类,用于验证功能是否正常工作。 5. **资源文件**:如数据库连接...

    非容器环境运行OpenJPA应用

    此外,还需要配置OpenJPA,这通常通过一个名为`persistence.xml`的文件来完成,该文件应放在`META-INF`目录下。`persistence.xml`中定义了数据源、持久化单元(Persistence Unit)以及其他OpenJPA相关的设置。 以下...

Global site tag (gtag.js) - Google Analytics