JAP和Spring整合的三种方式

JPA是Java EE5规范之一,是一个orm规范,由厂商来实现该规范。目前有hibernate,OpenJPA,TopLink和EclipseJPA等实现

Spring提供三种方法集成JPA:

1、LocalEntityManagerFactoryBean:适用于那些仅使用JPA进行数据访问的项目。该FactoryBean根据 JPA PersistenceProvider自动检测配置文件进行工作,一般从“META-INF/persistence.xml”读取配置信息。这种方式最简单,但是不能设置Spring中定义的DataSource,且不支持Spring管理的全局事务。不建议使用此方式。这种方法实际上只适用于独立的应用程序和测试环境(这正是JPA规范设计它的原因)。

在Spring中的配置:

<bean id=”entityManagerFactory” class=”org.springframework.orm.jpa.LocalEntityManagerFactoryBean”>

<property name=”persistenceUnitName” value=”persistenceUnit”/>

</bean>

获取EntityManagerFactory的方法是使用springframe的LocalContainerEntityManagerFactoryBean。

将前面获取EntityManagerFactory的class引用改一下:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
        </bean>

我们只需要配置persistenceXmlLocation这个属性,指定到classpath里面的META-INF/persistence.xml。

这种方式是配置JPA的强大的方法。因为它允许在应用程序中灵活进行本地配置。它支持连接现有JDBC数据源,支持本地事务(RESOURCE_LOCAL)和全局事务(JTA)。

另外,还可以与dataSource一起使用,我们的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/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MyPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

<class>myentiry.UserInfo</class>

</persistence-unit>

</persistence>

spring的applicationContext配置文件:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
            <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
            <property name="url" value="jdbc:sqlserver://192.168.2.44:1433;databaseName=test" />
            <property name="username" value="sa" />
            <property name="password" value="sa" />   
            <property name="initialSize" value="5" />
            <property name="minIdle" value="5" />      
            <property name="maxIdle" value="30" />              
            <property name="maxActive" value="100" /> 
            <property name="maxWait" value="1000" /> 
        </bean>

<bean id="entityManagerFactory" 
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource" />

<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
            <property name="persistenceUnitName" value="MyPU" />
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <property name="showSql" value="true" />
                    <property name="generateDdl" value="false" />
                </bean>
            </property>
        </bean>

persistenceUnitManager:用于获取JPA持久化单元,默认实现DefaultPersistenceUnitManager用于解决多配置文件情况。

dataSource:用于指定Spring定义的数据源。

persistenceXmlLocation:用于指定JPA配置文件,对于多JPA配置文件情况请选择设置persistenceUnitManager属性来解决。

persistenceUnitName:用于指定持久化单元名称。

persistenceProvider:用于指定持久化实现厂商类,如hibernate为:org.hibernate.ejb.HibernateProvider 类。

jpaVendorAdapter:用于设置JPA实现厂商的特定属性,如设置hibernate的是否自动生成DDL的属性generateDdl,这些属性是厂商特定的,因此最好在这里设置。目前spring提供HibernateJpaVendorAdapter,OpenJpaVendorAdapter,EclipseJpaVendorAdapter,TopLinkJpaVenderAdapter四个实现。其中最主要的属性是“database”,用来指定使用的数据库类型。从而根据数据库类型决定如何将数据库特定异常转换为Spring一致性异常。目前支持以下数据库:DB2,DERBY,H2,HSQL,INFORMIX,MYSQL,ORACLE,POSTGRESQL,SQL_SERVER,SYBASE

jpaDialect:用于指定一些高级特性,如事务管理等。目前Spring提供HibernateJpaDialect,OpenJpaDialect,EclipseJpaDialect,TopLinkJpaDialect和DefaultJpaDialect实现。注意DefaultJpaDialect不提供任何功能,因此在使用特定实现厂商的JPA实现时需要指定jpaDialect实现,如使用hibernate就使用HibernateJpaDialect。当指定jpaVendorAdapter属性时可以不指定jpaDialect,会自动设置相应的JpaDialect实现;

jpaProperties和jpaPropertyMap:指定JPA属性;如Hibernate中指定是否显示SQL的“hibernate.show_sql”属性,对于jpaProperties设置的属性自动会放进jpaPropertyMap中;

loadTimeWeaver:用于指定LoadTimeWeaver实现,从而允许JPA 加载时修改相应的类文件。具体使用得参考相应的JPA规范实现厂商文档,如Hibernate就不需要指定loadTimeWeaver。

也可以将JPA配属性相关置提专门取到jpa的配置文件persistence.xml:

persistence.xml:

<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="persistenceUnit" transaction-type="RESOURCE_LOCAL"/>
    </persistence>

时间: 2024-10-10 01:01:24

JAP和Spring整合的三种方式的相关文章

Spring创建对象的三种方式以及创建时间

创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static HelloWorld getInstance(){ return new HelloWorld(); } } 2.在spring的配置文件中进行声明 <bean id="helloWorld2" class="com.itheima05.spring.bean.HelloWorld

spring配置datasource三种方式

1.使用org.springframework.jdbc.datasource.DriverManagerDataSource 说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用. <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">           

spring配置datasource三种方式 数据库连接池

尊重原创(原文链接):http://blog.csdn.net/kunkun378263/article/details/8506355 1.使用org.springframework.jdbc.datasource.DriverManagerDataSource 说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用. <bean id="dataSource" class="org.springf

Spring集成Memcached三种方式(一)

转载:http://blog.csdn.net/u013725455/article/details/52102170 Memcached Client目前有3种: Memcached Client for Java SpyMemcached XMemcached 这三种Client一直存在各种争议: Memcached Client for Java 比 SpyMemcached更稳定.更早.更广泛: SpyMemcached 比 Memcached Client for Java更高效: X

SpringBoot与Dubbo整合的三种方式

1. 使用默认application.properties和注解的方式 导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用@Reference来引用服务.具体可参考 Dubbo整合SpringBoot,这里截取部分代码方便理解. 属性在application.properties中配置 服务提供方使用@Service注解暴露服务 部分配置如“timeout”等可以在注解上添加 服务消费方使用@Reference注解来引

创建spring boot的三种方式

一. 在线创建 1.在线的地址:https://start.spring.io/ 然后填写你自己需要的版本最后 点击Generate the project 按钮下载 最后引用就可以了 二.使用IDE创建 我使用的工作工具是IDEA 接下来是要注意一下  你选择的路径地址当你修改project location时后面要自己手动添加 工程名字 然后点击完成 就可以了. 三.通过maven来构建 由于spring boot ,本质上是一个maven工程,因此可以先创建maven工程,再次改造成一个s

Spring整合JMS——三种connectionFactory

1.SingleConnectionFactory:对于建立JMS服务器链接的请求会一直返回同一个链接,并且会忽略Connection的close方法调用.(org.springframework.jms.connection.SingleConnectionFactory) 2.CachingConnectionFactory:继承了SingleConnectionFactory,所以它拥有SingleConnectionFactory的所有功能,同时它还新增了缓存功能,它可以缓存Sessio

执行spring boot应用三种方式

1.在IDE中执行在应用程序主入口右键执行main方法2.在项目根目录通过命令执行3.生成可执行jar 原文地址:http://blog.51cto.com/suyanzhu/2327488

【Spring】创建对象的三种方式

关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 一.通过构造函数创建对象. 2.1 利用无参构造函数+setter方法注入值 最基本的对象创建方式,只需要有一个无参构造函数(类中没有写任何的构造函数,默认就是有一个构造函数,如果写了任何一个构造函数,默认的无参构造函数就不会自动创建哦!!)和字段的setter方法. Person类: package com.