- 浏览: 89376 次
- 性别:
- 来自: 厦门
最新评论
-
zhengyong7232:
SELECT t.province,DECODE(landsc ...
列转行 -
meepo3927:
不是特么很懂
列转行
Connection conn = DataSourceUtils.getConnection(); //开启事务 conn.setAutoCommit(false); try { Object retVal = callback.doInConnection(conn); conn.commit(); //提交事务 return retVal; }catch (Exception e) { conn.rollback();//回滚事务 throw e; }finally { conn.close(); }
Session session = null; Transaction transaction = null; try { session = factory.openSession(); //开启事务 transaction = session.beginTransaction(); transation.begin(); session.save(user); transaction.commit();//提交事务 } catch (Exception e) { e.printStackTrace(); transaction.rollback();//回滚事务 return false; }finally{ session.close(); }
缺点:不一致的事务管理,复杂
2、高层次解决方案(编程式实现事务)
public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException; }
//1.获取事务管理器 PlatformTransactionManager txManager = (PlatformTransactionManager) ctx.getBean("txManager"); //2.定义事务属性 DefaultTransactionDefinition td = new DefaultTransactionDefinition(); td.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); //3开启事务,得到事务状态 TransactionStatus status = txManager.getTransaction(td); try { //4.执行数据库操作 System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc")); //5、提交事务 txManager.commit(status); }catch (Exception e) { //6、回滚事务 txManager.rollback(status); }
3、高层次解决方案(模板解决方案)
//1.获取事务管理器 PlatformTransactionManager txManager = (PlatformTransactionManager) ctx.getBean("txManager"); //2、定义事务管理的模板 TransactionTemplate transactionTemplate = new TransactionTemplate(txManager); //3.定义事务属性 transactionTemplate. setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); //4.回调,执行真正的数据库操作,如果需要返回值需要在回调里返回 transactionTemplate.execute(new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus status) { //5.执行数据库操作 System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc")); return null; } });
4、AOP解决方案 Spring框架提供了一致的事务管理抽象,这带来了以下好处:
1:为复杂的事务API提供了一致的编程模型,如JTA、JDBC、Hibernate、JPA和JDO
2:支持声明式事务管理
3:提供比复杂的事务API(诸如JTA)更简单的、更易于使用的编程式事务管理API
4:非常好地整合Spring的各种数据访问抽象
实施事务的步骤
1、定义(资源)DataSource/SessionFactory……
2、定义事务管理器(管理资源的事务)
3、定义事务通知:定义了如何实施事务(实施事务的方法名和对应的事务属性),需要使用事务管理器管理事务,定义了如何选择目标对象的方法及实施的事务属性
4、定义advisor(切入点和事务通知):切入点选择需要实施事务的目标对象
5、Spring织入事务通知到目标对象(AOP代理)
实施流程:
发表评论
-
最小生成树之Kruskal算法
2013-12-15 00:54 1092这篇文章实现最小生成树的Kruskal算法Kruskal算 ... -
排序算法--插入排序
2013-12-15 00:47 1068插入排序原理:假设 ... -
poi创建下拉框
2013-04-16 19:01 0package finance.tools.salesper ... -
Spring中Transactional配置
2013-04-11 20:43 1007Spring中Transactional配置 标签: 杂谈 分 ... -
Hibernate将Enum枚举类型映射为Int类型 .
2013-04-09 16:46 1542最近要用Hibernate做一个枚举类型的映射,在MySQL ... -
Hibernate 更灵活的用法 HibernateCallback
2013-01-22 14:41 1439在项目中用Hibernate的DetachedCriter ... -
spring源代码分析(2)--BeanFactory
2013-01-20 12:38 1436我们首先来看下BeanFacroty接口 pa ... -
spring源代码分析(1)--Resource的分析
2013-01-20 12:22 4050我们知道,在spring中,配置文件是通过资源形式加载的, ... -
DefaultListableBeanFactory研究
2013-01-18 10:49 5914DefaultSingletonBeanRegistry完 ... -
jvm的内存调优
2013-01-11 15:54 8681) 堆 运行时数 ... -
struts2中Action的name 和package的name和namespace是什么作用
2013-01-02 12:16 9642在struts2的 struts.xml 配置中 例: ... -
深入探索 高效的Java异常处理框架
2012-10-22 14:09 917摘要:本文从Java异常最基本的概念、语法开始讲述了Java异 ... -
JAVA对ArrayList排序
2012-10-16 21:53 16544java如何对ArrayList中对象按照该对象某属性排序 ... -
ThreadPoolExecutor使用和思考(中)-keepAliveTime及拒绝策略
2012-09-11 00:48 962工作中多处接触到了ThreadPoolExecutor。趁着现 ... -
ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
2012-09-11 00:45 1658工作中多处接触到了ThreadPoolExecutor。趁着现 ... -
Spring IOC之BeanFactory
2012-09-10 12:39 1317BeanFactory ,作为 Spring 基础的 IoC ... -
Java5 并发学习
2012-09-10 11:33 825在Java5之后 ... -
CXF ,在Client端用于把 Date 类型转换成 XMLGregorianCalendar .
2012-08-31 16:54 1664import javax.xml.datatype.Datat ... -
《Spring技术内幕》学习笔记10——Web环境中Spring的启动过程
2012-07-30 09:04 10091.Spring 不但可以在 JavaSE 环境中应用,在 W ... -
spring 加载bean过程源码简易解剖
2012-07-30 08:45 1216这一篇主要是讲用载入bean的过程。其实就是IOC.低调 低调 ...
相关推荐
Spring 1.2.9引入了一些增强,包括对JDBC模板的改进,事务管理的支持,以及对Java EE 1.4的兼容性更新。尽管这个版本在当时具有重要意义,但随着技术的发展,它的功能逐渐被更强大的后续版本所超越。 接下来是...
1. **Spring概述**:介绍Spring框架的发展历程、设计理念和主要功能,解释为什么Spring成为企业级Java开发的首选框架。 2. **环境搭建**:指导如何安装配置Java环境,以及如何设置IDE,如STS,来准备Spring开发环境...
此外,英文文档部分则可能涵盖了更广泛的上下文,包括Spring4.3.13和4.0.2版本的差异,这对于理解Spring的发展历程和不同版本之间的兼容性问题非常有帮助。4.3.13可能涉及了一些新的特性和改进,而4.0.2文档则有助于...
- **微服务发展历程**:从单体架构、SOA 面向服务架构过渡到了当前流行的微服务架构。 - **Spring 生态圈**:解释了 Spring、Spring Boot 和 Spring Cloud 之间的关系,以及它们各自在微服务架构中的作用。 - **...
首先,Spring2是Spring框架的一个较早版本,虽然现在已经有更新的版本如Spring5,但了解早期版本的配置有助于理解Spring的发展历程和核心概念。在MyEclipse中配置Spring2,我们需要完成以下几个关键步骤: 1. **...
在学习Spring Cloud Alibaba时,你需要了解微服务的发展历程,从单体架构到SOA再到微服务的演变。理解微服务的基本形式,包括服务的拆分原则、服务间通信方式等。此外,还需要掌握Spring、Spring Boot和Spring Cloud...
#### 一、Spring Boot基础篇 ##### 1.1 Spring Boot简介 - **定义**:Spring Boot是由Pivotal团队提供的全新框架,其设计目标是简化新Spring应用的初始搭建以及开发过程。 - **特点**: - 约定优于配置(Convention...
1. **基础篇** - iBATIS安装与配置:介绍如何在项目中引入iBATIS,包括下载、配置以及依赖管理。 - SqlMapConfig.xml配置文件解析:讲解配置文件的结构和各项属性,如数据源设置、事务管理等。 - SQL Maps设计与...
3. **国内外发展情况**:论文可能探讨了国内外医院信息系统的发展历程、现状及趋势,包括先进的信息技术在医疗领域的应用,如电子病历、远程医疗等。 4. **研究目标**:论文的主要目标可能是设计并实现一个基于SSH...
这部分内容对于任何Java开发者来说都是必不可少的,特别是"JAVA前言",它可能讨论了Java的发展历程和其在软件开发中的地位。 "JDBC学习笔记"将教你如何与数据库交互,比如Oracle,这是JavaEE应用中数据存储的关键。...
1. Java发展历程:从Sun Microsystems到Oracle,Java的演变历程及其版本更新。 2. Java特性:面向对象、跨平台、自动内存管理等核心特性。 3. Java语法:类、对象、接口、继承、多态等基础知识。 4. 数据类型:基本...
Spring则在业务层发挥作用,提供事务管理和会话管理功能,同时可以通过其依赖注入(Dependency Injection)机制支持业务类的创建和管理。而Hibernate作为持久层的代表,主要负责数据源和连接池的管理,以及对象关系...
1. **基础篇**:这一部分介绍了EJB的基本概念和发展历程,为读者打下坚实的基础。此外,还详细解释了EJB容器的作用以及如何在不同环境中部署EJB组件。 2. **核心篇**:深入探讨了EJB 3.0的核心特性,如Session ...
总之,Java框架的发展历程反映了软件工程中不断追求简化和提高生产力的趋势。从JDBC到ORM,Java开发逐渐走向更高层次的抽象,以适应日益复杂的应用场景。了解和掌握这些框架,对于Java开发者来说,不仅可以提升工作...
以下就是一篇关于“Java程序员的成长历程”的详细解读。 首先,Java初学者通常会从学习基础语法开始,包括变量、数据类型、控制结构(如if语句和循环)、类与对象的概念。理解这些基础知识是构建扎实编程技能的第一...
1. **Java篇1**:这部分介绍了Java的创始人James Gosling以及Java的发展历程,强调了Java作为一种全面、强大的编程语言,在当前IT行业的广泛应用。 2. **Java基础知识**:这里可能涉及Java的基本语法、数据类型、...
总的来说,这篇实习报告详尽地展示了作者在Java开发、数据库管理和Web应用开发方面的学习历程,充分体现了理论与实践相结合的重要性。通过实习,作者不仅深化了对Java语言的理解,也拓宽了在数据库操作和Web框架应用...