J2EE项目开发与设计 教学课件 ppt 作者 彭灿华 魏士伟 12

上传人:E**** 文档编号:89493716 上传时间:2019-05-25 格式:PPTX 页数:38 大小:2.63MB
返回 下载 相关 举报
J2EE项目开发与设计  教学课件 ppt 作者 彭灿华 魏士伟 12_第1页
第1页 / 共38页
J2EE项目开发与设计  教学课件 ppt 作者 彭灿华 魏士伟 12_第2页
第2页 / 共38页
J2EE项目开发与设计  教学课件 ppt 作者 彭灿华 魏士伟 12_第3页
第3页 / 共38页
J2EE项目开发与设计  教学课件 ppt 作者 彭灿华 魏士伟 12_第4页
第4页 / 共38页
J2EE项目开发与设计  教学课件 ppt 作者 彭灿华 魏士伟 12_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《J2EE项目开发与设计 教学课件 ppt 作者 彭灿华 魏士伟 12》由会员分享,可在线阅读,更多相关《J2EE项目开发与设计 教学课件 ppt 作者 彭灿华 魏士伟 12(38页珍藏版)》请在金锄头文库上搜索。

1、12.使用Spring操作数据库,J2EE系统开发与设计,学习目标,掌握Spring配置数据源注入的方法 理解Spring框架的事务处理原理 理解PlatformTransactionManager的接口作用和意义 掌握Spring通过Template模式访问数据库的方式 本章将更深入地介绍Spring框架的使用和工作模式。 (这些知识都是开发实际应用项目时要用到的),2,12.1 数据源datasource的注入,3,为了便于对数据源的管理,人们是否可以把数据库的链接信息当做一个Java组件,配置在Spring的配置文件中,让Spring框架统一管理呢? 答案是肯定的。 下面的代码就是将数据

2、库的链接信息配置在applicationContext.xml文件中,让Spring框架当做一个普通的Bean实例进行管理。,12.1 数据源datasource的注入,4,12.1 数据源datasource的注入,5,12.1 数据源datasource的注入,6,上面的配置文件中定义了一个id为dataSource的Bean实例,人们可以通过Spring容器获取该实例,进而通过该实例对象获得简单的数据库连接。 从该实例也可以看出,Spring的Bean实例可以代表应用中的任何组件、任何资源实例。,12.1 数据源datasource的注入,7,12.2 Spring框架的事务处理,8,1

3、2.2.1 传统的JDBC事务处理 事务是现代数据库理论中的核心概念之一。 如果一组处理步骤或者全部发生或者一步也不执行,则称该组处理步骤为一个事务。当所有步骤像一个操作一样被完整地执行,则称该事务被提交。由于其中的一部分或多步执行失败,导致一些步骤没有被提交,则事务必须回滚(回到最初的系统状态)。 事务处理在应用程序中起着至关重要的作用,它是一系列任务的组成工作单元,在这个工作单元中,所有的任务要么全部执行,要么全部不执行举个简单的例子,一个客户从A银行转账至B银行,要做的动作是从A银行的账户扣款、在B银行的账户加上转账的金额,这两个动作必须成功,如果有一个动作失败,则此次转账失败。,12.

4、2 Spring框架的事务处理,9,下面介绍JDBC如何使用事务管理。首先来看事务的原子性实现,在JDBC中,可以操作Connection的setAutoCommit()方法,通过设定false参数将事务的处理方式设置为人为手动提交,完成SQL语句后,执行Connection的commit()方法向数据库提交变更,然后恢复JDBC事务的默认提交方式,整个事务处理流程执行完成。如果在执行这些SQL语句时发生错误,则执行 rollback()方法来撤销所有的执行。传统JDBC事务处理的编程步骤一般如下:,12.2 Spring框架的事务处理,10,try . /更改JDBC事务的默认提交方式 co

5、nnection.setAutoCommit(false); . /一连串SQL操作 . /提交JDBC事务 mit(); /恢复JDBC事务的默认提交方式 connection.setAutoCommit(true); catch(SQLException) /发生错误,撤销所有变更,回滚JDBC事务 connection.rollback(); ,12.2.2 Spring框架的事务处理 Spring框架中最好的功能之一就是Spring的事务处理,它提供了一个轻量级的容器事务处理策略。通过Spring的事务框架,人们可以按照统一的编程模型来进行事务编程,无须关心所使用的数据访问技术和具体要

6、访问事务资源的类型,而且Spring的事务框架与Spring提供的数据访问支持可以紧密结合,避免了程序员在处理事务的过程与数据访问之间复杂烦琐的工作。Spring中提供了丰富的事务管理功能,12.2 Spring框架的事务处理,11,Spring提供编程式的事务管理(Programmatic Transaction Management)与声明式的事务管理(Declarative Transaction Management)两种不同的事务管理方式。不管哪种事务处理方式,Spring都供了一致的编程模型。下面来了解一下事务管理的这两种方式。 编程式的事务管理:编程式的事务管理可以清楚地控制事务

7、的边界,也就是让编程人员自行实现事务开始时间、撤销操作的时机、结束时间等,可以实现细粒度的事务控制。 声明式的事务管理:采用声明式的事务管理,事务管理的API可以不用介入程序之中,Spring不需要编写任何代码,即可实现基于容器的事务管理。从对象的角度来看,它并不知道自己正被纳入事务管理中,在不需要事务管理时,只要在设置文件上修改一下设置,即可移去事务管理服务。 大部分时候推荐使用声明式的事务管理,它允许人们在开发过程中不理会任何事务逻辑,等应用开发完后使用声明式事务进行统一事务管理。只需要在配置文件中增加事务控制片段,业务逻辑组件的方法将会具有事务性。本书也是以声明式的事务管理为例进行的。,

8、12.2 Spring框架的事务处理,12,Spring使用AOP支持声明式事务,它会根据事务属性自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。Spring2.x版本以后,使用XML Schema方式配置事务更为简洁明了。Spring提供了tx的命名空间来配置事务管理,tx命名空间下提供了元素来配置事物切面,一旦使用该元素配置了事务切面,就可以直接使用元素自动代理了。 为业务逻辑组件添加事务的步骤如下: 针对不同的事务策略配置对应的事务管理器。 使用元素配置事务切面Bean,配置事务切面Bean时使用多个子元素,为不同方法指定相应的事务语义。 在元素中使用元素

9、配置自动事务代理。,12.2 Spring框架的事务处理,13,假如在Spring的配置文件中已经配置好一个事务管理器(参见12.3节的内容),则只需要增加如下代码即可为业务逻辑组件的方法添加事务支持,而不用像传统的事务处理那样在代码中书写事务处理的代码。,12.2 Spring框架的事务处理,14,12.3 PlatformTransactionManager的接口作用,15,Spring能够按照一致的编程接口和编程模型进行事务编程,是通过Platform TransactionManager接口来实现的,该接口是Spring事务策略的核心。该接口的源代码如下:,12.3 PlatformT

10、ransactionManager的接口作用,16,public interface PlatformTransactionManager() /平台无关的获得事务的方法 TransactionStatue getTransaction(TransactionDefinition definition) throws TransactionException; /平台无关的事务提交方法 void commit(TransactionStatus status) throws TransactionException; /平台无关的事务返回方法 void rollback(Transaction

11、Status status) throws TransactionException; ,PlatformTransactionManager是一个与任何事务策略分离的接口,随着底层不同事务策略的切换,应用程序要采用不同的实现类,这是Spring进行事务管理的一种策略。换句话说,底层的数据库访问技术可以是JDBC、Hibernate、或者JDO、JTA等。PlatformTransactionManager是所有这些数据库访问技术之上的一个接口,当采用不同的数据库访问技术时,只需要指定该接口的一个实现类即可,而对于针对这个接口操作的应用程序则无须任何修改,这就实现了编程代码的一致性和良好的解耦

12、。PlatformTransactionManager代表事务管理的接口,作为编程人员,无须知道底层如何管理事务、具体的实现规则由哪个类来完成,只要知道事务管理的提交开始事务(getTransaction())、提交事务(commit())和回滚事务(rollback())三个方法就可以了。 从对PlatformTransactionManager接口的分析可以知道,Spring并不直接管理事务。事实上,它只提供事务的多方选择,并将事务管理的职责委托给某一个特定的平台实现,如用Hibernate或者其他持久机制。Spring提供了许多内置事务管理器,它们都实现了PlatformTransact

13、ionManager接口。 DataSourceTransactionManager:JDBC事务管理器,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理。 HibernateTransactionManager:Hibernate事务管理器,提供对单个org.hibernate. SessionFactory事务支持,用于集成Hibernate框架时的事务管理;该事务管理器只支持Hibernate3以上版本。 JdoTransactionManager:JDO事务管理器,提供对单个javax.jdo.P

14、ersistenceManager Factory事务管理,用于集成JDO框架时的事务管理。 JpaTransactionManager:Jpa事务管理器,提供对单个javax.persistence.Entity ManagerFactory事务支持,用于集成JPA实现框架时的事务管理。 JtaTransactionManager:JTA事务管理器,提供对分布式事务管理的支持,并将事务管理委托给Java EE应用服务器事务管理器。 WebSphereUowTransactionManager:WebSphere事务管理器,Spring提供对WebSphere 6.0以上版本应用服务器事务管理

15、器的适配器,此适配器用于对应用服务器提供高级事务的支持。 有了这些实现类,人们在使用Spring的事务抽象框架进行事务管理时,只需要根据当前使用的数据访问技术选择对应的PlatformTransactionManager实现类即可。,12.3 PlatformTransactionManager的接口作用,17,如果用户的应用程序使用JDBC进行数据访问,那么就使用Spring提供的DataSourceTransactionManager 事务管理器,在Spring的配置文件中配置组件,代码如下:,12.3 PlatformTransactionManager的接口作用,18,public i

16、nterface PlatformTransactionManager() /平台无关的获得事务的方法 TransactionStatue getTransaction(TransactionDefinition definition) throws TransactionException; /平台无关的事务提交方法 void commit(TransactionStatus status) throws TransactionException; /平台无关的事务返回方法 void rollback(TransactionStatus status) throws TransactionException; ,如果用户的应用程序使用Hibernate持久化进行数据访问,那么就使用Spring提供的HibernateTransactionManager事务管理器,在Spring的配置文件中配置组件,代码如下:,12.3 PlatformTransactionManage

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号