`
jianchen
  • 浏览: 342269 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring学习之第六篇

阅读更多

《二》基于xml配置spring的事务管理

<bean id="txManager " class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
</bean>

<aop:config>
        <aop:pointcut id="transactionPointcut " expression="execution(* cn.jianchen.service..*.*(..))"/>
        <aop:advisor advice-ref="txAdvice " pointcut-ref="transactionPointcut "/>
</aop:config>

<tx:advice id="txAdvice " transaction-manager="txManager ">
        <tx:attributes>
                <tx:method name="get*" read-only="true" propagation ="NOT_SUPPORTED"/> //对获取方法不采用事务(以get开头的方法)
                <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

<!--打开采用@transactional注解方式使用事务 -->
<tx:annotation-driven transaction-manager="txManager "/>

问:JdbcTemplate.update方法单独执行内部使用了事务没有?
答:应该是启动了事务的。

 public void delete(Integer personid1 ,Integer personid2 )throws Exception{
        jdbcTemplate.update("delete from person where id=?",new Object[]{personid1 },new int[]{java.sql.Types.INTEGER});
        jdbcTemplate.update("delete from person where id=?",new Object[]{personid2 },new int[]{java.sql.Types.INTEGER});
}
如果未对delete方法配置事务管理,则delete方法内部的两条update语句,每条语句都会在自己的事务中执行,两者互不相干。就是说第二条更新语句出现问题出现了回滚不会影响到前一条语句的执行结果。
如果对delete方法配置了事务管理,就像前面使用注解或xml都行,只要配置了事务管理,那么两个方法就在同一个事务中执行,后一条语句出现问题会导致整个事务的回滚,第一条更新语句也要进行回滚操作。

 

 

数据库系统提供了四种事务隔离级
数据库系统提供了四种事务隔离级别提供用户选择。不同的隔离级别采用不同的锁类型来实现,在四种隔离级别中,Serializable的隔离级别最 高,Read Uncommited的隔离级别最低。大多数数据库默认的隔离级别为Read Commited,如SqlServer,当然也有少数部分数据库默认的隔离级别为Repeatable Read,如Mysql
Read Uncoommited:读未提交数据(会出现脏读,不可重复读和幻读)
Read Commited:读已提交数据(会出现不可重复读和幻读)
Repeatable Read:可重复读(会出现幻读)
Serializable:串行化

脏读:一个事务读取到另一个事务未提交的更新数据。
不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。换句话说就是,后续读取可以读到另一事务已提交的更新数据。
相反,“可重复读”在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据。

幻读:一个事务读取到另一事务已提交的insert数据。

mysql数据库使用快照技术实现可重复读。在同一事务中,将相关的数据库内容进行快照,以后在该同一事务中需要再次读取时,从快照中读取保证了读取的内容的一致性。

分享到:
评论

相关推荐

    学习笔记:尚硅谷Spring6基础篇

    ### 学习笔记:尚硅谷Spring6基础篇 #### 一、Spring框架概述 ##### 1.1 Spring是什么? Spring是一款主流的Java EE轻量级开源框架,由“Spring之父”Rod Johnson提出并创立。Spring的主要目标是简化Java企业级...

    SpringCloud学习第一天,helloWorld

    在本篇【SpringCloud学习第一天,helloWorld】的教程中,我们将初步接触并了解Spring Cloud这一微服务框架,以及如何创建一个基本的“Hello, World”应用。首先,我们需要理解Spring Cloud的核心概念和作用。 ...

    JAVA spring 系列案例50个和学习资料

    Spring系列第6篇:玩转bean scope,避免跳坑里!Spring系列第7篇:依赖注入之手动注入Spring系列第8篇:自动注入(autowire)详解,高手在于坚持Spring系列第9篇:depend-on到底是干什么的?Spring系列第10篇:...

    jee、spring、spring mvc、mybatis 学习(五)

    在本篇【jee、spring、spring mvc、mybatis 学习(五)】中,我们将深入探讨四个关键的Java企业级开发技术:Java EE(Java Enterprise Edition)、Spring框架、Spring MVC以及MyBatis。这些技术是现代Java Web应用...

    SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架

    本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...

    spring-security3 入门篇

    本入门篇将介绍Spring Security的基础知识,包括其核心概念、配置以及如何在实际项目中使用。 1. **核心概念** - **Authentication(认证)**: 用户身份验证是Spring Security的基础,它确认用户的身份是否合法。...

    Spring5 源码分析(第 2 版)-某Tom老师

    这篇文档通过详细剖析Spring5的源码,将复杂的概念以深入浅出的方式呈现出来,让学习者能够更好地掌握Spring的内在工作原理。 首先,我们要了解Spring框架的核心组件——依赖注入(Dependency Injection,简称DI)...

    spring5学习笔记

    "3、HelloSpring.md"通常作为Spring入门的第一个示例,展示了如何创建一个简单的Spring应用,帮助初学者快速上手。 综上所述,Spring5的学习涵盖了从基础到高级的各种主题,包括依赖注入、面向切面编程、事务管理、...

    《精通Spring2.X企业应用开发详解》随书源码1-15章

    动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...

    Spring Boot 初探 | 第一篇:第一个Spring Boot程序(示例程序)

    在本篇中,我们将探索如何创建并运行你的第一个 Spring Boot 应用程序。 1. **快速入门:创建项目** 要开始一个 Spring Boot 项目,你可以使用 Spring Initializr(https://start.spring.io/)。这是一个在线工具...

    咕泡学院_Tom_JavaVIP课程_深入分析Spring源码(第一阶段)1

    【Spring 框架概述】 Spring 是一个广泛使用的开源 Java 应用开发框架,它的核心目标是简化企业级应用的开发。...通过深入学习 Spring 源码,开发者可以更好地理解其工作原理,进一步优化和定制应用的实现。

    使用Gradle 构建spring Boot工程系列项目源码(配合第五篇文章)

    6. **构建任务**:Gradle的任务系统是其强大之处,例如,`bootRun`任务用于运行Spring Boot应用,`assemble`任务用于打包项目,`installDist`任务则可以将应用安装到本地仓库,方便后续的运行。 7. **源码组织**:...

    《精通Spring2.X企业应用开发详解》16-19章

    动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...

    《精通Spring2.X企业应用开发详解》20-23

    动态语言支持 第5篇 展现层应用 第19章 Spring MVC之一 第20章 Spring MVC之二 第21章 集成其他Web框架 第6篇 其他 第22章 Spring应用的测试 第23章 Spring工具类盘点 附录A 各种数据库连接...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    Struts2.1、Spring2.5和Hibernate3.3是经典的Java企业级开发框架组合,它们各自在...尽管现代框架如Spring Boot已逐渐取代这种传统的整合方式,但对于理解企业级开发的底层机制,这种经典组合仍然具有很高的学习价值。

    spring security两篇文档

    6. **CSRF防护**:Spring Security默认开启CSRF防护,防止恶意第三方发起跨站请求。你可以通过配置禁用或调整CSRF策略。 7. **记住我功能**:Spring Security提供Remember-Me服务,允许用户在一段时间内无需重新...

    spring源代码下载地址

    本篇文章将详细探讨Spring框架的源代码及其下载过程,帮助开发者更好地理解和学习Spring。 首先,Spring源代码的下载对于深入理解其工作原理、自定义扩展或排查问题至关重要。在描述中提到的"Spring源代码的下载...

    spring3--最小系统

    标题“spring3--最小系统”指的是Spring框架的第三版中构建最小化但功能完整的应用程序的方法。这个主题主要围绕Spring MVC 3展开,Spring MVC是Spring框架的一个模块,专门用于处理Web应用程序的请求-响应模式。在...

    Spring Web Service 实战篇(1)

    首先,Spring Web Service是Spring框架的一个扩展,它允许开发人员创建基于WSDL(Web Services Description Language)的第一类公民的SOAP(Simple Object Access Protocol)服务。通过使用Spring Web Service,...

Global site tag (gtag.js) - Google Analytics