Spring 3.1 + JPA 2.0 (Hibernate 4) + MySQL 配置 移走persistence.xml。

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

原文:http://blog.csdn.net/haibinzhang/article/details/7431789

   近来闲暇时间摆弄了一下Spring、Hibernate,原因非常简单,做得项目在用Java做web开发,项目使用的Jersey+EclipseLink框架。而Spring与Hiberante早已名声在外,所以可以说是慕名而来啦!接触时间不长,所以文章中有误在所难免,欢迎板砖侍候。

查看Hibernate tutorial,Hibernate提供了3种方式实现ORM:

1. Native Hibernate APIs and hbm.xml Mappings

2. Native Hibernate APIs and Annotation Mappings

3. Java Persistence API (JPA)

第一种方式对象类的定义对象与数据库间的映射配置信息是分开的,对象类就是一平常Java类,配置信息就一hbm.xml文件。用这种方式,看似划分清晰,但写起来和用起来感觉不是太爽,一是写的东西多,写的多出错的机会就大;二是不停地在对象类和配置文件间来回切换,闪得慌。第二种方式直接将hbm.xml配置文件扔掉,将配置信息以Annotation风格与对象类紧密结合在一起。整合之后感觉清爽不少,少写了不少代码,对象属性与数据库表紧密结合,代码维护成本大大减少。第三种方式采用了JPA 2.0,JPA是ORM的一种规范,定义了操作的标准接口,对应该接口已有几种实现:Hibernate,EclipseLink。与第二种方式相比,JPA方式需要一persistence.xml配置文件。

对比上述三种方式,个人比较倾向于第三种,原因一是拥有Annotation带来的优点,二来如果那天不想使用Hibernate了,改用其他类似EclipseLink,或者其他的ORM,更换代价非常小。

        Spring 3.1相比之前版本,出现了一新特征:JPA EntityManageFactory bootstrapping without persistence.xml。这一特征的出现,进一步简化了Spring与JPA间的整合:移走persistence.xml。


下面就是对Spring与JPA 2.0 (Hibernate 4)整合的配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:p="http://www.springframework.org/schema/p"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"   
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xmlns:util="http://www.springframework.org/schema/util"  
  8.     xsi:schemaLocation="  
  9.             http://www.springframework.org/schema/beans   
  10.             http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  11.             http://www.springframework.org/schema/tx   
  12.             http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
  13.             http://www.springframework.org/schema/context  
  14.             http://www.springframework.org/schema/context/spring-context-3.1.xsd  
  15.             http://www.springframework.org/schema/util   
  16.             http://www.springframework.org/schema/util/spring-util-3.1.xsd">  
  17.   
  18.   
  19.     <!-- Data Source -->  
  20.     <bean id="dataSource"  
  21.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  22.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  23.         <property name="url" value="jdbc:mysql://localhost:3306/hibernate" />  
  24.         <property name="username" value="root" />  
  25.         <property name="password" value="" />  
  26.     </bean>  
  27.   
  28.     <!-- This will ensure that Hibernate or JPA exceptions are automatically   
  29.         translated into Spring's generic DataAccessException hierarchy for those   
  30.         classes annotated with Repository. For example, see ***DAOImpl. -->  
  31.     <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />  
  32.   
  33.   
  34.     <!-- JPA Entity Manager Factory -->  
  35.     <bean id="entityManagerFactory"  
  36.         class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"  
  37.         p:packagesToScan="com.haibin.rest" p:dataSource-ref="dataSource"  
  38.         p:jpaVendorAdapter-ref="hibernateVendor" p:jpaPropertyMap-ref="jpaPropertyMap" />  
  39.   
  40.     <util:map id="jpaPropertyMap">  
  41.         <entry key="hibernate.hbm2ddl.auto" value="update" />  
  42.         <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />  
  43.   
  44.         <!-- To enable Hibernate's second level cache and query cache settings -->  
  45.         <entry key="hibernate.max_fetch_depth" value="4" />  
  46.         <entry key="hibernate.cache.use_second_level_cache" value="true" />  
  47.         <entry key="hibernate.cache.use_query_cache" value="true" />  
  48.         <entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />  
  49.     </util:map>  
  50.   
  51.     <bean id="hibernateVendor"  
  52.         class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"  
  53.         p:database="MYSQL" p:showSql="true" p:generateDdl="true"  
  54.         p:databasePlatform="org.hibernate.dialect.MySQLDialect" />  
  55.   
  56.     <!-- Transaction Config -->  
  57.     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"  
  58.         p:entityManagerFactory-ref="entityManagerFactory">  
  59.         <property name="jpaDialect">  
  60.             <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />  
  61.         </property>  
  62.     </bean>  
  63.   
  64.     <!-- User declarative transaction management -->  
  65.     <tx:annotation-driven transaction-manager="transactionManager" />  
  66.       
  67.   
  68. </beans>  
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
			http://www.springframework.org/schema/context
			http://www.springframework.org/schema/context/spring-context-3.1.xsd
			http://www.springframework.org/schema/util 
			http://www.springframework.org/schema/util/spring-util-3.1.xsd">


	<!-- Data Source -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql://localhost:3306/hibernate" />
		<property name="username" value="root" />
		<property name="password" value="" />
	</bean>

	<!-- This will ensure that Hibernate or JPA exceptions are automatically 
		translated into Spring's generic DataAccessException hierarchy for those 
		classes annotated with Repository. For example, see ***DAOImpl. -->
	<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />


	<!-- JPA Entity Manager Factory -->
	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
		p:packagesToScan="com.haibin.rest" p:dataSource-ref="dataSource"
		p:jpaVendorAdapter-ref="hibernateVendor" p:jpaPropertyMap-ref="jpaPropertyMap" />

	<util:map id="jpaPropertyMap">
		<entry key="hibernate.hbm2ddl.auto" value="update" />
		<entry key="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

		<!-- To enable Hibernate's second level cache and query cache settings -->
		<entry key="hibernate.max_fetch_depth" value="4" />
		<entry key="hibernate.cache.use_second_level_cache" value="true" />
		<entry key="hibernate.cache.use_query_cache" value="true" />
		<entry key="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
	</util:map>

	<bean id="hibernateVendor"
		class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
		p:database="MYSQL" p:showSql="true" p:generateDdl="true"
		p:databasePlatform="org.hibernate.dialect.MySQLDialect" />

	<!-- Transaction Config -->
	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
		p:entityManagerFactory-ref="entityManagerFactory">
		<property name="jpaDialect">
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
		</property>
	</bean>

	<!-- User declarative transaction management -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	

</beans>


 

配置文件主要包含了5个部分:

1.  Data source Configuration

2.  JPA Entity Manager Factory Configuration

3.  Transaction Configuration

4.  Transaction Management

5.  Exception

具体内容就不赘述了,尝试一下的话,可以参考或修改:Spring+JPA 微笑

  1. <PRE class=html name="code" sizcache="0" sizset="3"><PRE></PRE>  
  2. <PRE></PRE>  
  3. <PRE></PRE>  
  4. <PRE></PRE>  
  5. <PRE></PRE>  
  6. <PRE></PRE>  
  7. <PRE></PRE>  
  8. <PRE></PRE>  
  9. <PRE></PRE>  
  10. <PRE></PRE>  
  11. <PRE></PRE>  
  12. <PRE></PRE>  
  13. <PRE></PRE>  
  14. <PRE></PRE>  
  15.   
  16. </PRE>  

 

Spring 3.1JPA 2.0Hibernate 4) + MySQL 配置 近来闲暇时间摆弄了一下SpringHibernate,原因非常简单,做得项目在用Java做web开发,项目使用的Jersey+EclipseLink框架。而Spring与Hiberante早已名声在外,所以可以说是慕名而来啦!接触时间不长,所以文章中有误在所难免,欢迎板砖侍候。 查看Hibernate tutorial,Hibernate提供了3种方式实现ORM: 1. Native Hib 阅读详情

相关推荐

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

springMVC+JAP整合彻底摆脱persistence.xml配置文件 springjpa整合 除去persistence.xml配置文件 使用属性文件 数据源dbcp访问数据库.

JPAHibernate 整合的Spring配置

1.配置 PersistenceUnit ,在 persistence.xml 中       &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSc...

yyxawe的专栏 218

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

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

Spring Data JPA入门简解与XML配置实现

Spring Data 项目的目的是为了简化构建基于Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等等。另外也包含对关系数据库的访问支持。 SpringData有许多子项目,其中一个为Spring Data JPA 。 【1JPA JPA是sun提出的一个对象持久化规范,各JavaEE应用服务器自主选择具体实现。 JPA的设计者是Hib...

小小默:进无止境 1万+

Spring Boot学习(十一):Spring Boot整合和使用JPA,详细易懂!

前言 Spring Boot系列: 点击查看Spring Boot系列文章 JPA是什么? JPA(Java Persistence API)是Sun官方提出的Java持久化规范. 为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据. 它的出现是为了简化现有的持久化开发工作和整合ORM技术. 结束各个ORM框架各自为营的局面. JPA仅仅是一套规范,不是一套产品, 也就是说Hibernate, TopLink等是实现了JPA规范的一套产品. Spring Data JPA Spr

qq_36551991的博客 1036

SpringDataJpapersistence.xml配置

<?xml version="1.0" encoding="UTF-8"?> ...

weixin_40085248的博客 617

springboot使用遇到问题:Class “model.Address” is listed in the persistence.xml file but not mapped...

报错如下: 解决如下: 这是一个Eclipse的怪癖。我最近在创建一个禁用了JPA配置的新JPA项目时遇到了这个问题,但是在我通过EclipseNew JPA Entity向导创建实体之前没有手动配置JPA库。创建实体后,我在项目的构建路径中配置JPA库(只需在库中添加目标Java EE服务器运行时),但验证错误仍然存​​在。我可以通过以下至少一种方式解决它: 右键...

weixin_30512785的博客 676

Spring boot配置文件学习总结

1配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; •application.properties •application.yml 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML(YAML Ain't Markup Language) ​    YAML  A Markup Language:是...

qaz18328333951的博客 272

springboot整合jpa

1.新建springboot项目 2.在application.yml中设置数据库的连接 spring: profiles: active: dev --- server: port: 8009 spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/users?useUnicode=true&charaterEncodi

追梦i 180

JPA配置文件persistence.xml

这是JPA配置文件 需要在src下新建一个META-INF 如图所示 下面是配置文件的内容: http://java.sun.com/xml/ns/persistence" version="1.0">        org.hibernate.ejb.HibernatePersistence

qq67888693 1001

hibernate连接access、MySql、sqlServer的persistence.xml配置文件(JPA

JPA配置文件:persistence.xml

weixin_62873133的博客 859

spring3.1 struts2.3 hibernate4.1 jpa集成小例子

spring3.1 struts2.3 hibernate4.1 jpa集成小例子,实现查询和添加小功能,删除和修改同理自己写吧。

【系统学习SpringBoot】SpringBoot初遇Spring-Data-JPA

JPAJPA是【Java Persistence API】的简称,中文名【Java持久层API】,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 Sun引入新的JPA ORM规范出于两个原因: 【1】简化现有Java EE和Java SE应用开发工作; 【2】Sun希望整合ORM技术,实现天下归一。 目前比较成

小鼠标的博客 1336

SpringBoot中数据库的配置和使用

文章目录1MySQL1.1配置依赖1.2、实体配置1.3JPA实现持久化1.4、测试 此文忽略Springboot项目的创建以及初始化 学习书籍《深入实践SpringBoot》 1MySQL 对于传统关系型数据库(如MySQL)来说,SpringBoot使用JPA(Java Persistence API)资源库实现对数据库的操作。JPA是为POJO(Plain Ordinary J......

龙套的博客 6万+

Spring Boot学习笔记-零xml配置jpa

springdata jpa配置

程高伟 5707

JPA配置文件persistence.xml参数详解

JPA配置文件persistence.xml参数详解 JPA规范要求在类路径的META-INF目录下放置persistence.xml, 文件的名称是固定的,配置模板如下: Xml代码 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLS

大鹏的专栏 2万+

Spring 3.1JPA 2.0Hibernate 4) + MySQL 配置

查看Hibernate tutorial,Hibernate提供了3种方式实现ORM: 1. Native Hibernate APIs and hbm.xml Mappings 2. Native Hibernate APIs and Annotation Mappings 3. Java Persistence API (JPA) 第一种方式对象类的定义和对象与数据库间的映射配置信息是...

一个大龄码农的专栏 191

持久化persistence.xml配置文件

在EJB中,一个实体Bean应用由实体类和persistence.xml文件文件组成。persistence.xml文件在jar文件的META-INF目录下。persistence.xml文件指定实体Bean使用的数据源及Entity Manager对象的默认行为。        我们来看一个最简单的persistence.xml文件,了解一下它的配置

紫羽风的博客 1万+

JPA配置多数据源多persistence.xml文件

JPA的优势 1.JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。 2.JPA提供了对容器级特性的支持 JPA 框架中支持大数据集、事务、并发等容器级事务,这使得 JPA

熊浪的博客 1万+
上一篇: 基于注解的SpringMVC整合JPA
下一篇: UML相关工具一览(截止2012年5月)
gdn_wolf
博客等级 码龄17年 8粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值