以前使用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注入到使用它的地方了。
分享到:
相关推荐
本教程将详细介绍如何在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提供运行时的配置依据。通过合理...
1. **配置JPA供应商**:在项目的pom.xml(Maven)或build.gradle(Gradle)文件中添加EclipseLink的依赖。 2. **设置数据源**:配置数据库连接信息,如URL、用户名和密码。 3. **实体配置**:在Java类上使用`@Entity...
本文将深入探讨如何利用Spring MVC与JPA进行整合,并通过简化`persistence.xml`配置文件来优化项目结构。 首先,Spring MVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了...
当你在程序运行时遇到“javax.persistence”问题,这通常意味着你的项目缺少了`javax.persistence.jar`库,导致无法执行JPA相关的操作。解决这个问题的最直接方法就是将提供的压缩包导入到你的项目类路径中,确保JPA...
通过配置部署描述符(如`persistence.xml`),可以指定数据源、实体类、持久化单元等信息,进一步定制持久化行为。 总结来说,`ejb3-persistence.jar`和`hibernate-annotations.jar`是Java企业级开发中的重要组件,...
在 MyEclipse 中,我们可以使用 Hibernate 根据现有的数据库表结构生成实体和 hbm.xml 配置文件,这样可以避免手动编写 JPA 或 Hibernate 实体类。下面是生成实体和 hbm.xml 文件的步骤: 首先,需要创建一个 JPA ...
EJB3的持久化特性基于Java Persistence API(JPA),它是Java EE和Java SE中用于对象/关系映射的标准。JPA允许开发者使用面向对象的方式来操作数据库,通过注解(Annotations)和XML配置文件定义对象与数据库表之间...
在Java企业级应用开发中,EJB(Enterprise JavaBeans)和JPA(Java Persistence API)是两个关键的技术组件。EJB用于实现业务逻辑,而JPA则是Java平台上的ORM(对象关系映射)标准,帮助开发者处理数据库操作。在本...
- **ORM支持**:通过注解或XML配置文件,JPA允许开发人员将Java对象映射到关系数据库表。 - **查询语言**:提供了两种查询方式:JPQL(Java Persistence Query Language)和Criteria API。JPQL是一种面向对象的查询...
`persistence.xml` 文件是JPA项目的配置核心,其中定义了持久化单元(Persistence Unit),包括数据源信息、类路径、事务管理方式等配置。例如: ```xml <persistence-unit name="examplePU" transaction-type=...
通过`persistence.xml`文件配置数据源、JPA供应商、实体类等信息。 ### 9. 框架集成 JPA可以与Spring、Hibernate等框架集成,进一步提升开发效率。例如,Spring Data JPA 提供了一种声明式的方式进行数据访问,...
本书详细介绍了如何配置JPA,包括在Java应用服务器中设置持久化单元(Persistence Unit),以及如何在persistence.xml文件中定义数据源、提供者和其他配置属性。同时,书中还涵盖了事务管理和并发控制,这是多用户...
**JPA(Java Persistence API)**是Java平台上用于对象关系映射(ORM)的一个标准API,它提供了一种规范化的框架来管理Java应用程序中的持久化数据。JPA允许开发者使用面向对象的编程模型来处理数据库操作,使得业务...
2. **配置 OpenJPA**:创建一个 `persistence.xml` 文件,定义持久化单元(Persistence Unit),包括数据库连接信息、实体类等。 ```xml <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...
- **创建JPAHello项目**:这一步包括创建数据库表、创建项目、添加JPA能力到项目中、使用JPA配置文件编辑器修改persistence.xml文件等内容。 - **使用反向工程快速生成JPA实体类和DAO**:MyEclipse提供了一键式工具...
《Apress.Pro.EJB.3.Java.Persistence.API》这本书专注于企业级Java开发中的核心技术——EJB(Enterprise JavaBeans)3.0和Java Persistence API(JPA)。EJB是Java平台上用于构建可部署在服务器端的企业级应用的...