persistence.xml

spring-demo-cfg.xml

hibernate配置文件

Spring Data JPA:为简化JPA的开发提供帮助。EntityManager的创建与销毁、事务管理等代码被抽取出来,交由Spring统一管理,在没有特殊需求的情况下,开发人员不再需要关心这些;LocalContainerEntityManagerFactoryBean提供了非常灵活的配置方式,JPA规范中的配置信息(persistence.xml )可以由其以属性注入的方式进行配置;通过继承Repository接口,Spring可以为开发人员自动实现Dao层的大部分操作(增删改查、分页、审 计等)。

Spring提供了三种方式建立EntityManagerFactory,LocalEntityManagerFactoryBean、LocalContainerEntityManagerFactoryBean和Obtaining an EntityManagerFactory from JNDI。LocalEntityManagerFactoryBean用于简单应用或测试,通过META-INF/persistence.xml整合其它ORM框架提供的JPA实现。Obtaining an EntityManagerFactory from JNDI用于Java EE应用服务器。LocalContainerEntityManagerFactoryBean用于独立运行的应用程序,它使Spring能够完全控制JPA。通过该方式,开发人员能在一个文件内完成JPA的所有配置。packagesToScan属性使EntityManagerFactory自动扫描指定包内的实体类。jpaVendorAdapter属性定义Hibernate为JPA的提供者,这里Spring采用了适配器模式将Hibernate集成进来。jpaProperties属性详细定义了Hibernate的配置参数,这个配置方式与常规的做法不同。一般来讲,数据库连接池会被单独定义,然后集成到JPA中,而在这里是通过Hibernate来管理所有涉及数据库的配置,这样不仅简化了配置,而且能够使模块之间的关系更清晰。再加上Hibernate早已弃用了dbcp,并自己集成了c3p0,所以通过Hibernate自身来管理数据库连接池应该是最稳妥的方式。Hibernate本身有连接池,官网上介绍它的连接池功能只是用作开发和测试,在实际的项目中需要集成第三方产品,通过设置hibernate.c3p0.*属性就能启动c3p0连接池。

Spring为JPA提供了专门的事务管理器,JpaTransactionManager,并且通过tx:annotation-driven标签自动扫描代码中添加了@Transactional的类和public成员函数。jpa:repositories标签能够自动为指定包内的继承了Repository<T, ID extends Serializable>的Dao接口提供事务处理功能。

  对于事务管理需要专门说明一下。首先,管理的对象必须是可以进行事务操作的资源,例如数据库、消息队列、缓存等,并且这些资源要提供事务管理的功能。使用MyISAM引擎的MySQL 数据库本身不支持事务,所以无须在Spring中配置事务管理器,因为即使配置了,也没有实际用处。但Hibernate的事务管理和一级缓存有密切的关 系:当调用save、update等方法时,Hibernate并不直接向数据库发送SQL语句,而是在提交事务或flush一级缓存时才真正向数据库发送SQL。所以,即使数据库不支持事务,Hibernate的事务管理也是有一定好处的,不会对数据操作的效率造成负面影响。也就是说Spring集成Hibernate后,不论数据库是否支持事务,都可以进行事务管理的操作。甚至当Hibernate的connection.autocommit为true时,Spring仍然能够控制事务。

  另外,事务的属性可以通过@Transactional标签进行设置。比较重要的属性:传播行为,默认是PROPAGATION_REQUIRED,它表示有事务环境时就加入到已有的环境中,没有就新建一个。比如,在Service层声明了事务管理,同时Dao层因为继承Repository接口也默认声明了事务管理。当Service层中的函数调用Dao层中的函数时,两个函数共用一个事务,即外层函数的事务。Spring中事务传播行为有七种,各有用途,详细说明可以参考相关资料。事务操作,Repository接口定义的增删改默认是read和write,而查询默认为只读。事务回滚,默认是对unchecked异常回滚,对checked异常不回滚。事务隔离级别,默认是DEFAULT,它与数据库本身事务操作有关,如果没有特殊要求,可以忽略它。事务超时,默认是无,可以设置以秒单位的时间。

jpa-hibernate配置转换的更多相关文章

  1. SpringMVC+JPA+Hibernate配置

    首先,Spring配置文件 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=" ...

  2. SPRING+JPA+Hibernate配置方法

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

  3. Hibernate JPA 中配置Ehcache二级缓存

    在Hibernate3 JPA里配置了一下非分布式环境的二级缓存,效果不错.具体过程如下: 1, 需要引入的jar包 http://ehcache.org/downloads/catalog 下载的包 ...

  4. Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)

    近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 ...

  5. Spring Boot + Jpa(Hibernate) 架构基本配置

    本文转载自:https://blog.csdn.net/javahighness/article/details/53055149 1.基于springboot-1.4.0.RELEASE版本测试 2 ...

  6. SpringBoot + Jpa(Hibernate) 架构基本配置

    1.基于springboot-1.4.0.RELEASE版本测试 2.springBoot + Hibernate + Druid + Mysql + servlet(jsp) 一.maven的pom ...

  7. Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题

      (转载)Spring Boot + JPA(hibernate 5) 开发时,数据库表名大小写问题   这几天在用spring boot开发项目, 在开发的过程中遇到一个问题hibernate在执 ...

  8. 63.JPA/Hibernate/Spring Data概念【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 事情的起源,无意当中在一个群里看到这么一句描述:"有人么?默默的问一句,现在开发用mybatis还是hibernate还是jpa&quo ...

  9. Spring Boot 2.x 之 Spring Data JPA, Hibernate 5

    1. Spring Boot常用配置项 基于Spring Boot 2.0.6.RELEASE 1.1 配置属性类 spring.jpa前缀的相关配置项定义在JpaProperties类中, 1.2 ...

  10. Spring + SpringMVC + Druid + JPA(Hibernate impl) 给你一个稳妥的后端解决方案

    最近手头的工作不太繁重,自己试着倒腾了一套用开源框架组建的 JavaWeb 后端解决方案. 感觉还不错的样子,但实践和项目实战还是有很大的落差,这里只做抛砖引玉之用. 项目 git 地址:https: ...

随机推荐

  1. mac下wget用来仿站

    wget -c -r -np -k -L -p http://www.domain.com 参考 http://www.v2ex.com/t/147870

  2. C++实现glut绘制点、直线、多边形、圆

    C++实现glut绘制点.直线.多边形.圆 必备环境 glut.h 头文件 glut32.lib 对象文件库 glut32.dll 动态连接库 程序说明 C++实现了用glut画点.画直线.画多边形和 ...

  3. 《自学C语言》初级教程 - 目录

    我现在打算出一个C语言学习教程,目的是为了让初学者能够很容易和更深刻地理解C语言. 你可能有这样的疑问,网上不是有很多的初级教程吗,我需要这个吗?我的回答是:网上的C语言教程讲得不够全面,而且许多的初 ...

  4. JDBC连接数据库代码

    //连接是需要导包 http://pan.baidu.com/s/1o6nyuOa /*配合数据库建立表 create database day14 character set utf8 collat ...

  5. UAP如何根据DeviceFamily显示不同的页面

    背景 微软推出UAP 推荐使用响应式的UI,但是难免遇到一些特殊情况需要使用不同的Page来在不同的设备显示. 微软目前最新的VS2015在10074上安装后能够支持这个功能特性,只是暂时没有文档介绍 ...

  6. MarkdownPad2添加目录(输出为HTML时可用)

    平时看书的时候懒得上网写在线博客,就在电脑上用了很长时间的MarkDownPad2来记录自己的心得笔记,等那天高兴了再把他们贴出来.界面清爽,是我使用它最重要的原因,但是MarkdownPad2导出的 ...

  7. OC 加密

    //MD5加密的结果为128位的二进制数. //所以有128 / 8 = 16字节(8位一个字节). //每八位表示两个16进制数. //MD5 有32个16进制数. //语言层次的所有摘要算法步骤类 ...

  8. Codeforces Round #Pi (Div. 2) E. President and Roads 最短路+桥

    题目链接: http://codeforces.com/contest/567/problem/E 题意: 给你一个带重边的图,求三类边: 在最短路构成的DAG图中,哪些边是必须经过的: 其他的(包括 ...

  9. C# 客户端判断服务器连接已断开

    问题描述:        在C# Socket编程中,服务器端已经断开连接(发送数据方),客户端接收服务器端发送数据,在客户端使用client.Recieve()中,服务器端断开连接,客户端任然显示已 ...

  10. Log4j XML配置

    问题描述:     Log4j  XML配置 问题解决:     (1)编写log4j.xml配置文件 注:     如上的XML文件必须以log4j.xml文件命名,否则无法读取配置文件,同样的如果 ...