spring框架核心(一)-事务处理

合集下载

Spring总结与思考

Spring总结与思考

Spring总结与思考1、Spring是什么?Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器(框架)。

它的主要⽬得是简化企业开发。

Spring 框架是⼀个分层架构,由 7 个定义良好的模块组成。

Spring 模块构建在核⼼容器之上,核⼼容器定义了创建、配置和管理 bean 的⽅式 .组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他⼀个或多个模块联合实现。

每个模块的功能如下:核⼼容器Spring Core:核⼼容器提供 Spring 框架的基本功能。

核⼼容器的主要组件是BeanFactory,它是⼯⼚模式的实现。

BeanFactory 使⽤控制反转(IOC)模式将应⽤程序的配置和依赖性规范与实际的应⽤程序代码分开。

Spring 上下⽂Spring Context:Spring 上下⽂是⼀个配置⽂件,向 Spring 框架提供上下⽂信息。

Spring 上下⽂包括企业服务,例如 JNDI、EJB、电⼦邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP 模块直接将⾯向切⾯的编程功能 , 集成到了 Spring 框架中。

所以,可以很容易地使 Spring 框架管理任何⽀持 AOP的对象。

Spring AOP 模块为基于 Spring 的应⽤程序中的对象提供了事务管理服务。

通过使⽤ Spring 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技术,⽀持将⼀些通⽤任务,如安全、事务、⽇志、权限等进⾏集中式管理,从⽽提供更好的复⽤。

Spring核心技术详解

Spring核心技术详解

Spring核⼼技术详解⼀、Sring简介Spring是⼀个分层的Java SE/EE应⽤⼀站式的轻量级开源框架。

Spring核⼼是IOC和AOP。

Spring主要优点包括:⽅便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进⾏控制,避免硬编码造成的程序耦合度⾼。

AOP编程的⽀持,通过Spring提供的AOP功能,⽅便进⾏⾯向切⾯编程。

声明式事务的⽀持,在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活地进⾏事务的管理,提⾼开发效率和质量。

⽅便程序的测试,可以⽤⾮容器依赖的编程⽅式进⾏⼏乎所有的测试⼯作。

⽅便集成各种优秀框架,Spring提供了对各种优秀框架的直接⽀持。

⼆、Spring体系结构如下图所⽰,整个spring框架按其所属功能可以划分为五个主要模块,这五个模块⼏乎为企业应⽤提供了所需的⼀切,从持久层、业务层到表现层都拥有相应的⽀持,这就是为什么称Spring是⼀站式框架的原因。

核⼼模块(Core Container) Spring的核⼼模块实现了IoC的功能,它将类和类之间的依赖从代码中脱离出来,⽤配置的⽅式进⾏依赖关系描述。

由IoC容器负责类的创建,管理,获取等。

BeanFactory接⼝是Spring框架的核⼼接⼝,实现了容器很多核⼼的功能。

Context模块构建于核⼼模块之上,扩展了BeanFactory的功能,包括国际化,资源加载,邮件服务,任务调度等多项功能。

ApplicationContext是Context模块的核⼼接⼝。

表达式语⾔(Expression Language)是统⼀表达式语⾔(EL)的⼀个扩展,⽀持设置和获取对象属性,调⽤对象⽅法,操作数组、集合等。

使⽤它可以很⽅便的通过表达式和Spring IoC容器进⾏交互。

AOP模块Spring AOP模块提供了满⾜AOP Alliance规范的实现,还整合了AspectJ这种AOP语⾔级的框架。

spring习题及答案

spring习题及答案

spring习题及答案Spring习题及答案Spring是一个非常流行的Java开发框架,它提供了一整套的工具和库,用于简化企业级应用程序的开发。

对于想要学习和掌握Spring框架的开发者来说,掌握一些基本的习题和答案是非常重要的。

下面我们来看一些常见的Spring习题及答案。

1. 什么是Spring框架?它有哪些核心模块?答:Spring框架是一个轻量级的Java开发框架,它提供了一整套的解决方案,用于简化企业级应用程序的开发。

Spring框架的核心模块包括IoC容器、AOP、数据访问和事务管理、Web开发、测试等。

2. 什么是Spring的IoC容器?它有哪些常见的实现方式?答:IoC(Inversion of Control)容器是Spring框架的核心,它负责管理应用程序中的对象。

常见的IoC容器实现方式包括BeanFactory和ApplicationContext。

3. Spring的AOP是什么?它有哪些常见的概念?答:AOP(Aspect-Oriented Programming)是一种编程范式,它允许开发者在不改变原有代码的情况下,增加横切关注点的功能。

常见的AOP概念包括切点(Pointcut)、通知(Advice)、切面(Aspect)等。

4. 如何在Spring中进行数据访问和事务管理?答:Spring提供了一整套的数据访问和事务管理的解决方案,包括JDBC、ORM、事务管理器等。

开发者可以通过配置数据源、定义数据访问对象(DAO)和事务管理器来实现数据访问和事务管理。

5. 如何在Spring中进行Web开发?答:Spring提供了一整套的Web开发解决方案,包括Spring MVC、RESTful Web服务、WebSocket等。

开发者可以通过配置控制器、视图解析器、拦截器等来实现Web开发。

6. 如何在Spring中进行单元测试和集成测试?答:Spring提供了一整套的测试支持,包括JUnit、TestNG、Spring Test、Mockito等。

java三大框架是什么

java三大框架是什么

java三大框架是什么Java三大框架是什么一、介绍Java是一种广泛使用的编程语言,由于其跨平台性和丰富的类库支持,成为了企业级应用开发的首选语言。

在Java开发中,框架是非常重要的组成部分,它们提供了一套结构化的工具和方法来简化开发流程并提高代码的重用性和可维护性。

在众多Java框架中,有三个最重要、最流行且被广泛使用的框架,它们分别是Spring框架、Hibernate框架和Struts框架。

二、Spring框架1. 简介Spring框架是一个轻量级的Java开发框架,最初用于解决企业级应用开发中的复杂性和耦合性问题。

Spring提供了一系列的模块和组件,为开发者提供了全面的解决方案,例如依赖注入、AOP(面向切面编程)、IoC(控制反转)等。

Spring框架的核心是IoC容器,它通过管理对象的生命周期和控制对象之间的依赖关系,简化了开发流程。

2. 主要特点和优势(1)松耦合:Spring框架通过IoC容器管理对象之间的依赖关系,使得应用程序的各个组件之间变得松散耦合,便于维护和升级。

(2)面向切面编程:Spring框架支持AspectJ规范,可以通过AOP实现横切关注点的模块化,并将其与业务逻辑分离,提高了代码的可维护性和重用性。

(3)可扩展性:Spring框架采用模块化的设计,开发者可以根据需要选择性地使用各个模块,使得框架具有很高的可扩展性和灵活性。

(4)测试支持:Spring框架提供了对单元测试的支持,可以方便地对代码进行单元测试和集成测试。

3. 使用场景Spring框架广泛应用于企业级应用开发,特别是在大规模和复杂度高的项目中表现出色。

由于其完善的设计和优秀的生态系统,Spring框架不仅可以用于开发Web应用程序,还可以用于开发移动应用、分布式系统、大数据系统等各种类型的应用。

三、Hibernate框架1. 简介Hibernate框架是一个优秀的Java持久化框架,它简化了对象与数据库之间的映射和操作,提高了开发效率和代码的可维护性。

Spring事务配置的五种方式

Spring事务配置的五种方式

Spring事务原理统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatusspring提供了几个关于事务处理的类:TransactionDefinition //事务属性定义TranscationStatus //代表了当前的事务,可以提交,回滚。

PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。

一般事务定义步骤:TransactionDefinition td = new TransactionDefinition();TransactionStatus ts = transactionManager.getTransaction(td);try{ //do sthmit(ts);}catch(Exception e){transactionManager.rollback(ts);}spring提供的事务管理可以分为两类:编程式的和声明式的。

编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。

编程式主要使用transactionTemplate。

省略了部分的提交,回滚,一系列的事务对象定义,需注入事务管理对象.void add(){transactionTemplate.execute( new TransactionCallback(){pulic Object doInTransaction(TransactionStatus ts){ //do sth}}}声明式:使用TransactionProxyFactoryBean:<bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager"><ref bean="transactionManager"/></property><property name="target"><ref local="userManagerTarget"/></property><property name="transactionAttributes"><props><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="*">PROPAGATION_REQUIRED,readOnly</prop></props></property></bean>围绕Poxy的动态代理能够自动的提交和回滚事务org.springframework.transaction.interceptor.TransactionProxyFactoryBeanPROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。

后端服务面试题目及答案(3篇)

后端服务面试题目及答案(3篇)

第1篇一、基础概念1. 问题:什么是后端服务?它与前端服务的区别是什么?答案:后端服务主要负责处理数据存储、业务逻辑和外部交互等核心功能。

它与前端服务的区别主要在于职责和呈现方式。

前端服务负责用户界面的展示和交互,而后端服务负责数据的处理和逻辑实现。

2. 问题:什么是RESTful API?答案:RESTful API是基于REST(Representational State Transfer)架构风格的网络API。

它使用HTTP协议作为通信协议,利用URI定位资源,通过HTTP动词(GET、POST、PUT、DELETE等)对资源进行操作。

3. 问题:什么是MVC模式?答案:MVC(Model-View-Controller)模式是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。

模型负责数据存储和业务逻辑,视图负责展示数据,控制器负责处理用户输入和转发请求。

二、技术栈4. 问题:简述Java虚拟机(JVM)的工作原理。

答案:JVM是一种运行在操作系统之上的虚拟机,它负责将Java字节码转换为本地机器码执行。

JVM的工作原理包括类加载、字节码验证、字节码执行等环节。

5. 问题:解释Spring框架的核心组件。

答案:Spring框架的核心组件包括:- 核心容器:包括BeanFactory和ApplicationContext。

- AOP(面向切面编程):提供声明式事务管理和日志记录等功能。

- 数据访问与集成:提供ORM(对象关系映射)和JDBC操作等功能。

- 消息传递:提供消息队列和消息中间件等功能。

6. 问题:解释Redis的工作原理。

答案:Redis是一种基于内存的键值存储数据库。

它采用单线程模型,使用非阻塞I/O和多路复用技术实现高性能。

Redis使用内存作为数据存储,支持多种数据结构,如字符串、哈希、列表、集合和有序集合。

spring事务原理

spring事务原理数据库系统内,事务指一系列连续的操作,这系列操作被看作一个整体,要么完全执行,要么完全不执行,不会出现执行部分的情况,这是数据库系统的基本特征之一。

在传统数据库系统中,事务的管理是由数据库系统自身提供的一种功能,然而随着数据库系统的复杂性的增加,数据库中的事务管理越来越复杂,对数据库操作有更多的要求,这样就催生了应用层事务管理技术,而当前最流行的事务管理技术是Spring事务。

Spring事务是一种基于AOP(面向切面编程)的分布式事务管理技术,它能够帮助系统更好的控制事务的处理过程,从而使系统内的数据更加有效率的共享,降低数据库事务的管理复杂度,提高数据库系统的可用性及性能。

Spring事务原理包括几个要素:事务模型、分布式事务处理框架、事务实现机制以及事务管理工具等。

一、事务模型Spring事务原理的核心是事务模型,即它把事务分为两种:提交成功事务和失败事务,在Spring提供的事务模型中,每个事务都只有两种结果,要么提交成功,要么提交失败,而不存在半提交的状态。

在Spring的事务模型中,事务的分类还要求事务的原子性,它要求一旦提交事务,事务就不会再次改变,或者改变的程度会很小。

原子性还表明事务的执行要么完全成功,要么完全失败,不会出现半成功半失败的情况。

二、分布式事务处理框架Spring提供了基于AOP技术的分布式事务处理框架,这种分布式事务处理框架能够有效地支持不同数据库之间的事务处理,它包括三个部分:事务管理器(TransactionManager)、事务拦截器(TransactionInterceptor)和事务事件监听器(TransactionListener)。

事务管理器是Spring对分布式事务的抽象,它可以处理不同类型的事务,它的实现通常会涉及到一些事务拦截器。

事务拦截器是Spring提供的一种安全机制,它能够在事务处理过程中,根据配置的规则,来拦截事务的执行,以便能够在事务处理过程中发现任何可能存在的问题,并对其进行调整,使得事务能够顺利的提交。

ssm框架技术题库及答案交流

ssm框架技术题库及答案交流SSM框架,即Spring、SpringMVC和MyBatis的组合,是Java开发中常用的轻量级企业应用开发框架。

下面我将提供一些SSM框架技术题库及答案,供大家学习和交流。

1. Spring框架的核心是什么?- 答案:Spring框架的核心是控制反转(IoC)和面向切面编程(AOP)。

2. SpringMVC是如何实现请求的映射的?- 答案:SpringMVC通过注解@Controller和@RequestMapping来实现请求的映射。

3. MyBatis与JDBC的区别是什么?- 答案:MyBatis是一个半自动的ORM框架,它允许开发者编写SQL语句并映射到Java对象,而JDBC是一个全手动的数据库访问API,需要手动编写SQL语句并处理结果集。

4. Spring框架中的Bean是什么?- 答案:Spring框架中的Bean是构成应用程序的主要组件,它们由Spring IoC容器进行管理。

5. SpringMVC中的DispatcherServlet的作用是什么?- 答案:DispatcherServlet是SpringMVC的前端控制器,它负责将请求路由到相应的处理器。

6. 什么是AOP?在Spring框架中如何使用?- 答案:AOP(面向切面编程)是一种编程范式,它允许开发者将横切关注点(如日志记录、事务管理等)与业务逻辑分离。

在Spring框架中,可以通过@Aspect注解和相关API来实现AOP。

7. MyBatis的配置文件有哪些?- 答案:MyBatis的配置文件主要包括mybatis-config.xml(全局配置文件)和映射文件(Mapper XML文件或注解)。

8. Spring框架的事务管理是如何实现的?- 答案:Spring框架通过声明式事务管理来实现事务控制,主要通过@Transactional注解来声明事务的边界和特性。

9. SpringMVC的视图解析器有哪些类型?- 答案:SpringMVC的视图解析器主要有InternalResourceViewResolver(用于解析JSP视图)、BeanNameViewResolver等。

spring原理和实现机制

spring原理和实现机制Spring框架是一个开源的应用程序框架,它提供了一种简单的方法来构建基于Java的企业级应用程序。

Spring框架的原理和实现机制主要包括:1. 控制反转(IoC):Spring使用控制反转(Inversion of Control,IoC)来管理应用程序中的对象。

传统的应用程序中,对象的创建和依赖关系管理是由程序员来实现的,而在Spring 中,对象的创建和管理工作由容器来完成。

容器会在应用程序启动时创建对象,并通过依赖注入的方式将对象之间的依赖关系注入到相应的对象中。

2. 依赖注入(DI):依赖注入是Spring框架的核心机制之一。

它指的是容器在创建对象时,自动将其所依赖的其他对象注入进来。

通过依赖注入,对象之间的解耦程度大大提高,使得应用程序更加灵活、可扩展和可维护。

3. 面向切面编程(AOP):Spring框架通过面向切面编程(Aspect-Oriented Programming,AOP)来实现横切关注点的模块化。

AOP可以将应用程序的核心逻辑(称为核心关注点)与横切关注点(如日志、事务管理等)分离开来,并通过切面来统一管理这些横切关注点。

4. 核心容器:Spring框架的核心是其容器(Container)。

容器使用BeanFactory接口作为底层容器的基础,并提供了ApplicationContext接口作为更高级的容器接口。

容器负责创建和管理应用程序中的对象,并提供了丰富的配置和管理功能。

5. 层次化的模块化架构:Spring的模块化架构使得开发者可以根据自己的需要选择使用不同的模块。

例如,Spring的核心模块包括IoC容器、AOP框架和BeanFactory等,而其他模块如Spring MVC、Spring Data等则提供了特定领域的解决方案。

6. 轻量级与非侵入性:Spring框架的设计理念是轻量级和非侵入性的。

它不依赖于特定的编程模型,可以与其他技术和框架无缝集成。

ssm框架总结

ssm框架总结SSM框架总结SSM框架是目前Java开发中使用最广泛的三大主流框架之一,它由Spring、SpringMVC和MyBatis三个独立的框架组成,各自承担不同的职责和功能。

在这篇文章中,我将对SSM框架进行总结和分析。

一、Spring框架Spring是一个轻量级的Java企业级应用开发框架,它提供了一站式的解决方案,能够简化开发过程并提高开发效率。

Spring框架的核心是控制反转(IoC)和面向切面编程(AOP)。

控制反转是指将对象的创建和依赖关系的管理交给Spring容器来完成,开发者只需要通过配置文件或注解来定义所需的Bean,然后从容器中获取即可。

这样的设计思想可以降低代码的耦合度,提高代码的可维护性。

面向切面编程是Spring框架的另一个重要特性,它通过在主业务逻辑上方插入横切关注点(如日志、事务管理等),实现了代码的模块化和重用性。

开发者可以通过定义切面来对代码进行横向扩展,而不必修改原有的业务逻辑代码。

二、SpringMVC框架SpringMVC是一种典型的MVC(Model-View-Controller)设计模式的实现框架,它基于Servlet容器并与Spring框架无缝集成,用于开发Web应用程序。

在SpringMVC框架中,Controller负责接收和处理用户请求,然后将处理结果封装成Model对象,最后通过View来展示给用户。

通过这种模式的划分,能够有效地分离前端与后端的责任,并提高开发效率。

SpringMVC框架提供了丰富的注解和标签库,开发者可以通过这些工具来简化开发过程,减少样板代码,并且可以与前端框架(如Bootstrap、jQuery等)无缝集成,提供更好的用户体验。

三、MyBatis框架MyBatis是一种基于Java的持久层框架,它利用了面向对象的编程方式来完成与数据库的交互。

通过XML配置和SQL映射文件,开发者可以轻松地实现与数据库的交互操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

案例的共性内容有:
基于maven构建一个项目 创建实体类
package com.springdemo.tx.entity; import java.io.Serializable; /** * Created by yejf on 2018/1/30. */ public class Account implements Serializable { private Integer id; private String name; private double balance; // ... 其它的代码略 }
事务传播性 [Propagation]
定义事务是如何传播的,它描述的是从一个事务方法中调用另一个事务方法时,被调用方法的事务该如何与 前面的事务协调,Spring中定义了如下7种规则 图示 每一种规则下,它的形为如下表所述: 图示
பைடு நூலகம்
超时性[Timeout]
为了使应用程序很好地运行,事务不能运行太长的时间。因为事务可能涉及对后端数据库的锁定,所以长时 间的事务会不必要的占用数据库资源。事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完 毕,那么就会自动回滚,而不是一直等待其结束
编程式事务
支持两种方式,一是利用PlatformTransactionManager进行编程手动控制事务的提交与回滚,二是利用 TransactionTemplate做事务控制,它是基于回调机制。这两种做法都是侵入式的。
申明式事务
Spring框架支持XML和注解 两种方式来做申明式事务,下面我们一一讲解。
import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; import java.io.Serializable; import java.sql.Connection; import java.sql.SQLException; import java.util.List; @Repository public class AccountDaoImpl implements AccountDao { @Autowired private JdbcTemplate jdbcTemplate; @Override public void save(Account account) { if(account != null) { String sql = "insert into tbl_account(name,balance) values(?,?)"; jdbcTemplate.update(sql, account.getName(), account.getBalance()); } //模拟一个异常 [出现运行时异常,事务将会回滚] if(Math.random() < 0.5) { throw new RuntimeException("Random Exception"); } }
Spring框架的事务管理支持两种方式
编程式事务 编程式事务就是指通过在代码中嵌入事务控制代码来手动控制事务,这个方式的优点是可以在方法体中的代 码块级别进行控制事务,粒度较细,缺点是要侵入我们的业务代码,不推荐使用。 申明式事务 申明式事务是基于Spring的框架AOP技术,把事务当做一个“切面”,在需要做事务控制的代码上织入,可以控 制到方法层面,其优点是无需侵入目标代码,而且Spring针对不同的底层持久层实现提供了不同的事务管理 API,非常方便
事务的属性
事务的属性包括隔离级别、传播性、超时时间、回滚规则、只读性5个方面,如下图 图示
事务隔离级别 [Isolation]
1. ISOLATION_DEFAULT 使用后端数据库默认的隔离级别
2. ISOLATION_READ_UNCOMMITTED 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读 3. ISOLATION_READ_COMMITTED 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生 4. ISOLATION_REPEATABLE_READ 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复 读,但幻读仍有可能发生 5. ISOLATION_SERIALIZABLE 最高的隔离级别,完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读,也是最慢的事务隔 离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的
创建持久层接口
package com.springdemo.tx.dao; import com.springdemo.tx.entity.Account; import java.io.Serializable; import java.util.List; public interface AccountDao { void save(Account account); Account findById(Serializable id); List<Account> findAll(); void update(Account account); void delete(Serializable id); }
建表【如果是采用Hibernate框架则不需要,本案例使用 JdbcTemplate, 数据库任意】
create table tbl_account( id INTEGER auto_increment, name VARCHAR(255), balance DOUBLE, primary key(id) ) engine=InnoDB default charset=utf8;
只读性(Read Only)
事务的第三个特性是它是否为只读事务。如果事务只对后端的数据库进行该操作,数据库可以利用事务的只 读特性来进行一些特定的优化。通过将事务设置为只读,你就可以给数据库一个机会,让它应用它认为合适 的优化措施
回滚规则[Rollback Rule]
事务五边形的最后一个方面是一组规则,这些规则定义了哪些异常会导致事务回滚而哪些不会。默认情况 下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚(这一行为与EJB的回滚行为是一 致的) 但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚。同样,你还可以声明事 务遇到特定的异常不回滚,即使这些异常是运行期异常。
@Override public Account findById(Serializable id) { if(id != null) { RowMapper<Account> rowMapper = new BeanPropertyRowMapper<>(Account.class); String sql = "select * FROM tbl_account where id = ?"; return jdbcTemplate.queryForObject(sql, rowMapper, id); } } return null; @Override public List<Account> findAll() { RowMapper<Account> rowMapper = new BeanPropertyRowMapper<>(Account.class); String sql = "select * from tbl_account"; return jdbcTemplate.query(sql, rowMapper); } @Override public void update(Account account) { if(account != null && account.getId() != null) { String sql = "update tbl_account set name = ?,balance = ? where id = ?"; jdbcTemplate.update(sql, account.getName(), account.getBalance(), account.getId()); } }
Spring框架事务结构
下面的图示可以很清晰地展示Spring框架的事务API结构 图示
Spring并不直接管理事务,而是提供了多种事务管理器,如果持久层采用JDBC技术或mybatis框架,则选择 DataSourceTransactionManager来管理事务,如果采用Hibernate框架,则选择HibernateTransactionManager来 管理事务,等等
} }
}
创建业务层接口
package com.springdemo.tx.service; import com.springdemo.tx.entity.Account; public interface AccountService { int deposit(Account account, double money); int withdraw(Account account, double money); /******* * 转帐 * @param from * @param to * @param money * @return */ int transfer(Account from, Account to, double money); }
@Override public void delete(Serializable id) { if(id != null) { String sql = "delete from tbl_account where id = ?"; jdbcTemplate.update(sql, id);
相关文档
最新文档