spring事务管理

hibernate4整合spring3事务问题

懵懂的女人 提交于 2020-01-01 12:49:16
本文是作者在对hibernate4+spring3+struts2整合中遇到的一个问题。对s2sh进行了基本的整合搭建以后,就是对事务的控制管理,将hibernate的事务交由spring管理。根据网上资料,applicationContext.xml中基本的配置如下(注意先后顺序的问题): [html] view plain copy <? 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:aop= "http://www.springframework.org/schema/aop" xmlns:tx= "http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans

Spring中事务的配置与使用

浪子不回头ぞ 提交于 2020-01-01 12:47:46
1. spring的事务如何配置 spring的声明式事务配置: 1. <!-- 配置sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>/WEB-INF/classes/hibernate.cfg.xml</value> </property> </bean> 2. 配置事务管理器 <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> 3. 配置事务特性 <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation

SpringBoot设置事务隔离等级

☆樱花仙子☆ 提交于 2020-01-01 09:12:38
"If you're gonna play the game, boy, ya gotta learn to play it right" Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactional 便可。(在下文中会有图例) 关于事务管理器,不管是JPA还是JDBC等都实现自接口 PlatformTransactionManager 如果你添加的是 spring-boot-starter-jdbc 依赖,框架会默认注入 DataSourceTransactionManager 实例。如果Spring容器中存在多个 PlatformTransactionManager 实例,并且没有实现接口 TransactionManagementConfigurer 指定默认值,在我们在方法上使用注解 @Transactional 的时候,就必须要用value指定,如果不指定,则会抛出异常。对于系统需要提供默认事务管理的情况下,实现接口 TransactionManagementConfigurer 指定。对有的系统,为了避免不必要的问题,在业务中必须要明确指定 @Transactional 的 value 值的情况下。 不建议实现接口

Spring(四)

两盒软妹~` 提交于 2020-01-01 00:49:41
Spring 中的 JdbcTemplate JdbcTemplate 概述 它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。spring 框架为我们提供了很多 的操作模板类。 操作关系型数据的: JdbcTemplate HibernateTemplate 操作 nosql 数据库的: RedisTemplate 操作消息队列的: JmsTemplate 我们今天的主角在 spring-jdbc-5.0.2.RELEASE.jar 中,我们在导包的时候,除了要导入这个 jar 包 外, 还需要导入一个 spring-tx-5.0.2.RELEASE.jar(它是和事务相关的)。 JdbcTemplate 对象的创建 我们可以参考它的源码,来一探究竟: public JdbcTemplate() { } public JdbcTemplate(DataSource dataSource) { setDataSource(dataSource); afterPropertiesSet(); } public JdbcTemplate(DataSource dataSource, boolean lazyInit) { setDataSource(dataSource); setLazyInit(lazyInit);

Spring:AOP, 面向切面编程,JDK的动态代理,CGLIB代理,Spring的AOP技术(底层就是JDK动态代理和CGLIB代理技术)

偶尔善良 提交于 2019-12-29 14:30:34
AOP 概述 什么是 AOP, 面向切面编程 AOP 为 Aspect Oriented Programming 的缩写 , 意为:面向 切面 编程 , 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 . AOP 是 OOP 的延续 , 是函数式编程的一种衍生范型 . 利用 AOP 可以对业务逻辑的各个部分进行隔离 , 从而使得业务逻辑各部分之间的耦合度降低 , 提高程序的可重用性 , 同时提高了开发的效率 . - 传统开发模型 : 纵向的编程 . 面向切面编程 : 纵横配合的编程 . AOP 的作用及优势 作用: 在程序运行期间, 不修改任何相关源码对已有方法进行增强。 优势: 减少重复代码 、提高开发效率、维护方便 AOP 的实现方式 使用动态代理模式来实现 可能通过上面的介绍,我们还是没有一个清晰的认识。没关系,我们看看下面的具体应用。 //.模拟事务管理器 public class TransactionManagerHandler { public void begin() { System.out.println("开启事务"); } public void commit() { System.out.println("提交事务"); } public void rollback() { System.out.println("回滚事务"); }

Spring的基础知识点,面试常问

 ̄綄美尐妖づ 提交于 2019-12-27 02:02:27
1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。 常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库,提供IOC服务; Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等); Spring AOP:AOP服务; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、Spring 的优点? (1)spring属于低侵入式设计,代码的污染极低; (2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; (3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 (4)spring对于主流的应用框架提供了集成支持。 3、Spring的AOP理解: OOP面向对象,允许开发者定义纵向的关系

Spring基于xml方式实现对事务的管理,来保证事务的特性

孤者浪人 提交于 2019-12-27 00:03:35
原始bean.xml配置文件内容如下: <!-- 0.从外部加载数据源 1.创建连接池 DriverManagerDataSource 设置4个属性 2.创建JdbcTemplate, 注入dataSource --> <!-- 0.从外部加载数据源 --> <context:property-placeholder location="classpath:db.properties"/> <!--1.创建连接池 DriverManagerDataSource 设置4个属性--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--2.创建JdbcTemplate, 注入dataSource-->

事务模型

我的未来我决定 提交于 2019-12-26 20:57:10
3种事务模型 本地事务模型 本地事务模型的名称来自于它实际上不是管理事务的框架,而是本地资源管理器。资源管理器是与之通信的数据源的实际提供者。例如,对于数据库,资源管理器是通过数据库驱动程序和DBMS实现的。对于JMS,资源管理器是通过特定的JMS提供程序实现的队列(或主题)连接工厂。使用本地事务模型,开发人员管理连接,而不是事务。实际管理本地事务的是DBMS或JMS提供程序。关于本地事务, 事实是事务管理由底层数据库(DBMS)处理,如果是jms,则由底层消息传递提供程序处理。从开发人员的角度来看,我们不管理本地事务模型中的事务,而是管理连接 。下面的代码示例演示了使用直接JDBC代码的本地事务模型的使用: public void updateTradeOrder(TradeOrderData order) throws Exception { DataSource ds = (DataSource) (new InitialContext()).lookup( "jdbc/MasterDS"); Connection conn = ds.getConnection(); conn.setAutoCommit(false); Statement stmt = conn.createStatement(); String sql = "update trade_order ...

69道Spring面试题和答案

烈酒焚心 提交于 2019-12-26 18:41:35
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量: Spring 是轻量的,基本的版本大约2MB。 控制反转: Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器: Spring 包含并管理应用中对象的生命周期和配置。 MVC框架 :Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理: Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理: Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3. Spring由哪些模块组成

MyBatis源码解析(三)——Transaction事务模块

烈酒焚心 提交于 2019-12-26 04:52:00
原创作品,可以转载,但是请标注出处地址: http://www.cnblogs.com/V1haoge/p/6634151.html 1、回顾   之前介绍了Environment环境类,这其实是一个单例类,在MyBatis运行开启后只会存在一个唯一的环境实例,虽然我们可以在Configuration配置文件中配置多个环境,但是项目运行中只会存在其中的一个,一般项目会存在开发环境和测试环境、生产环境三大环境,其是否可以设置到配置文件中,在开发时使用开发环境,测试时使用测试环境,正式运营时可以使用生产环境。   之前还提到Environment类中有三个字段,除了id之外,TransactionFactory和DataSource都是比较复杂的模块,这一次我们介绍Transaction模块(即事务模块)。 2、事务模块   事务模块位于 org.apache.ibatis.transaction 包,这个包内的类均是事务相关的类:   org.apache.ibatis.transaction   -----org.apache.ibatis.transaction.jdbc   ----------JdbcTransaction.java   ----------JdbcTransactionFactory.java   -----org.apache.ibatis