- 浏览: 955696 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
1、问题
- 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、高层次解决方案(编程式实现事务)
- //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解决方案
nSpring框架提供了一致的事务管理抽象,这带来了以下好处:
1:为复杂的事务API提供了一致的编程模型,如JTA、JDBC、Hibernate、JPA和JDO
2:支持声明式事务管理
3:提供比复杂的事务API(诸如JTA)更简单的、更易于使用的编程式事务管理API
4:非常好地整合Spring的各种数据访问抽象
实施事务的步骤
1、定义(资源)DataSource/SessionFactory……
2、定义事务管理器(管理资源的事务)
3、定义事务通知:定义了如何实施事务(实施事务的方法名和对应的事务属性),需要使用事务管理器管理事务,定义了如何选择目标对象的方法及实施的事务属性
4、定义advisor(切入点和事务通知):切入点选择需要实施事务的目标对象
5、Spring织入事务通知到目标对象(AOP代理)
实施流程:
更多相关知识请参考:
发表评论
-
spring原理
2013-07-31 23:21 8751、spring原理 s ... -
通过实例浅谈Spring运作机制
2013-07-31 23:06 1168看到这个标题大家可能又想:哎,又一个重新发明轮子的人。在这里 ... -
spring用到的设计模式
2013-06-24 21:45 1195spring源码也读了两遍了,但对于里面描述的关系还是不太 ... -
SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
2013-04-14 20:45 3855Spring 声明式事务,propagation属性列表 PR ... -
Spring定时任务的几种实现
2013-01-24 10:32 1013Spring定时任务的几种实现 近日项目开发中需要执行一些 ... -
Spring多数据源解决方案
2012-10-02 22:49 1093... -
spring是如何管理 事务的
2012-07-08 14:43 1526Spring提供的事务管理可以分为两类:编程式的和声明式的。 ... -
【第六章】 AOP 之 6.9 代理机制 ——跟我学spring3
2012-07-07 12:36 873Spring AOP通过代理模式实现,目前支持两 ... -
【第九章】 Spring的事务 之 9.1 数据库事务概述 ——跟我学spring3
2012-07-07 12:37 9889.1 数据库事务概述 事 ... -
【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3
2012-07-07 12:37 10049.2.1 概述 ... -
【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3
2012-07-06 00:03 9129.3 编程式事务 9.3.1 编程式事务 ... -
【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3
2012-07-06 00:03 7549.4 声明式事务 9.4.1 声明式事务 ... -
我对AOP的理解
2012-07-06 00:02 8851、问题 问题:想要添加日志记录 ... -
我对IoC/DI的理解
2012-07-06 00:01 1022IoC IoC: Inversion of ... -
基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。
2012-07-06 00:02 2356基于JDK动态代理和CGLIB动态代理的实现S ... -
阅读spring源码
2012-07-05 21:22 1719读Spring源码之前,你要先清楚,为什么你要用S ... -
spring aop 详解
2012-07-01 18:41 1183文章链接:http://stamen.itey ... -
Spring ioc 详解
2012-07-01 18:14 2046文章链接:http://stamen.itey ... -
spring事务探索
2012-07-01 16:46 1003文章链接:http://www.iteye.com/topic ... -
spring aopframework实现
2012-06-18 09:51 1094package cn.itcast.day3.aopfr ...
相关推荐
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框架应用...