以前使用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>
分享到:
相关推荐
本教程将详细介绍如何在Spring MVC与JPA的整合中,去除传统的`persistence.xml`配置文件,转而使用属性文件来配置数据源以及DBCP(BasicDataSource)连接池来访问数据库。 首先,我们需要了解Spring MVC和JPA的基本...
“persistence.xml”是JPA规范的一部分,用于配置Java应用程序的数据持久化设置。这个XML文件通常位于项目的“META-INF”目录下,它包含了关于实体类的元数据,以及如何管理和访问这些实体的数据库连接信息。 2. *...
本教程将详细讲解如何通过Spring MVC和JPA的整合,实现无需`persistence.xml`配置文件的数据访问。我们将主要探讨以下几个方面: 1. **Spring MVC介绍**: Spring MVC是Spring框架的一个模块,它提供了模型-视图-...
Java持久化API(Java Persistence API)是Java平台上的一个标准,用于管理和操作关系数据库中的数据。它简化了对象关系映射(ORM),允许开发者以面向对象的方式处理数据,而无需直接编写SQL语句。JPA通过在Java类和...
`persistence.xml`是Java Persistence API (JPA)的标准配置文件,它位于项目的`META-INF`目录下。该文件主要负责定义实体类、数据源、事务管理器、持久化单元等关键信息,为Hibernate提供运行时的配置依据。通过合理...
本文将深入探讨如何利用Spring MVC与JPA进行整合,并通过简化`persistence.xml`配置文件来优化项目结构。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了...
1. **配置JPA供应商**:在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加EclipseLink的依赖。 2. **设置数据源**:配置数据库连接信息,如URL、用户名和密码。 3. **实体配置**:在Java类上使用`@Entity...
它允许开发者将Java类与数据库表关联,通过注解或者XML配置文件定义实体类与数据库表之间的映射关系。这样,当处理对象时,JPA会自动处理与数据库相关的CRUD(创建、读取、更新、删除)操作。 在`javax.persistence...
通过配置部署描述符(如`persistence.xml`),可以指定数据源、实体类、持久化单元等信息,进一步定制持久化行为。 总结来说,`ejb3-persistence.jar`和`hibernate-annotations.jar`是Java企业级开发中的重要组件,...
在 MyEclipse 中,我们可以使用 Hibernate 根据现有的数据库表结构生成实体和 hbm.xml 配置文件,这样可以避免手动编写 JPA 或 Hibernate 实体类。下面是生成实体和 hbm.xml 文件的步骤: 首先,需要创建一个 JPA ...
JPA允许开发者使用面向对象的方式来操作数据库,通过注解(Annotations)和XML配置文件定义对象与数据库表之间的映射。ejb3-persistence.jar中的实现提供了对这些特性的支持,包括: 1. 注解驱动:EJB3.0引入了诸如...
在本案例中,"jboss-web.xml"、"jndi.properties"和"oracle-ds.xml"是针对EJB+JPA在JBoss应用服务器中的配置文件,它们各自承担着不同的职责。 首先,"jboss-web.xml"是JBoss特定的Web应用程序部署描述符,它是...
本教程将详细介绍如何在Java开发环境中利用Hibernate和Java Persistence API(JPA)的注解进行数据持久化操作。首先,我们需要了解开发所需的环境和工具,包括MyEclipse 8.5(内含Hibernate 3.2以上版本)、JDK 5.0...
2. **配置 OpenJPA**:创建一个 `persistence.xml` 文件,定义持久化单元(Persistence Unit),包括数据库连接信息、实体类等。 ```xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...
- **ORM支持**:通过注解或XML配置文件,JPA允许开发人员将Java对象映射到关系数据库表。 - **查询语言**:提供了两种查询方式:JPQL(Java Persistence Query Language)和Criteria API。JPQL是一种面向对象的查询...
本书详细介绍了如何配置JPA,包括在Java应用服务器中设置持久化单元(Persistence Unit),以及如何在persistence.xml文件中定义数据源、提供者和其他配置属性。同时,书中还涵盖了事务管理和并发控制,这是多用户...
3. **JPA配置**:JPA的配置主要涉及`persistence.xml`文件,它定义了持久化单元,包括数据源、JPA供应商(如Hibernate)、实体类的包名以及其他的持久化属性。同时,Spring需要配置JPA的`...
在Spring中,我们可以使用`persistence.xml`文件来配置数据源、实体扫描以及JPA供应商。以下是一个简单的例子: ```xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...
JPA的`persistence.xml`,声明持久化单元。 3. **Web应用目录结构**:如WEB-INF下的`web.xml`,定义了应用的部署描述符。 4. **测试代码**:JUnit测试类,用于验证功能是否正常工作。 5. **资源文件**:如数据库连接...
此外,还需要配置OpenJPA,这通常通过一个名为`persistence.xml`的文件来完成,该文件应放在`META-INF`目录下。`persistence.xml`中定义了数据源、持久化单元(Persistence Unit)以及其他OpenJPA相关的设置。 以下...