j2ee项目实训spring框架技术——第9章spring中的事务管理技术及实现第2部分内容摘要:
管理实现的 模板 代码 示例 Connection conn = null。 try{ conn =。 (false)。 //(1) 缺省方式是自动提交 //完成对数据库的修改操作 ,在此没有列出细节代码 ()。 //(2)自己提交 (确认数据修改的行为) } catch(Exception e){ ()。 //(3) 恢复修改 (回滚) //进行异常处理 } finally{ try{ ()。 //(4) 关闭数据库连接 } catch(SQLException se){ //进行异常处理 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 8/18 页 } } ( 3) JDBC 标准的事务管理实现代码的主要缺点 从上面的 JDBC 标准的事务管理实现代码中可以了解到,不仅所编程实现的代码量比较长,而且也很容易疏忽或者忘掉一些异常捕获等的 try/catch 语句。 而且还必须在进行数据访问之前将 JDBC 的自动提交模式改变为手动提交模式( (false)。 的功能 )。 Spring 框架 DAO 组件中的 JdbcTemplate 类的缺省的 事务管理 模式 ( 1) Spring 框架对 JDBC 事务管理 方式进行了进一步的包装 对此读者通过前面的 【例 98】中的 DataSourceTransactionManager 类的部分代码示例中应该能够理解,这样将能够在一定的程度上简化标准的 JDBC 的编程实现。 因为,在Spring 框架中还提供了几个与编程实现的事务处理技术相关的一些帮助类。 1) TransactionDefinition,实现对 事务 的 属性 进行 定义 2) TranscationStatus,它 代表了当前的事务 运行的状态,辅助 事务提交 和 回滚 等操作 3) PlatformTransactionManager 接口,它具体实现对 事务 的管理和控制行为 这些 帮助 类是 Spring 框架 提供的用于管理事务的基础 API ,由于PlatformTransactionManager 为接口,因此对该接口提供如下的一个实现的抽象类AbstractPlatformTransactionManager,并且在该类的基础上又针对不同的事务资源提供了具体的实现类,比如在下面所要使用的事务管理类 DataSourceTransactionManager 等都是这个 AbstractPlatformTransactionManager 类的子类。 ( 2) JdbcTemplate 类的缺省的 事务管理 模式同样也采用 JDBC 默认的 AutoCommit 模式 由于在 Spring 框架的 DAO 组件中的 JdbcTemplate 类中的各种数据访问操作方法采用的是 JDBC 默认的自动提交( AutoCommit)模式,因此如果在实现某个转帐系统中采用下面的示例中的代码,将同样也无法保证数据操作的原子性。 【例 913】 本 示例中的代码将也无法保证数据 操作的原子性 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource)。 (Update InComeCount set money=money100 where id = 39。 123439。 )。 (Update OutComeCount set money=money100 where id = 39。 123439。 )。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 9/18 页 其主要的错误原因是由于在 Spring 框架的 DAO 组件中的 JdbcTemplate 类采用了AutoCommit 模式,因此当第一条 update 的数据操作完成之后将被自动提交,此时的数据库表中用户 ID 号为“ 1234”的对应的记录中的数据已经被更新,如果第二条 SQL 语句的操作出现了失败,系统将无法使得整个事务回滚到最初的状态。 ( 3)利用 DataSourceTransactionManager 类实现代码控制的事务管理 类为 JDBC DataSource 类型的数据源的事务管理组件。 对于该组件的应用,开发者只需要在 Spring 框架 IoC 容器的 XML 配置的 Bean 的定义配置文件中对它进行简单的配置,然后将其通过属性依赖注入引入到应用系统的 DAO 组件类中。 使用 Spring 框架编程式的事务管理的基本流程 ( 1)首先声明一个 基于 DataSource接口的 数据源 的实现类的对象实例 ( 2)其次声明一个事务管理类,可以在下面的几种形式中根据应用系统的实际数据访问平台来合理地选择其一,例如 DataSourceTransactionManager、 HibernateTransactionManger和 JTATransactionManager 等事务管理的具体实现类。 ( 3)最后在应用系统的有关的组件代码中加入事务处理控制的相关的代码 使用 Spring 框架编程式的事务管理的代码示例 在下面的 【例 914】中的 Spring 框架 编程式的事务管理的代码示例中,其编程的代码基本上是按照前面所描述的流程来实现的。 其中的 dataSource对象实例是通过依赖注入而获得的。 当然, 开发者 也可以直接将 JdbcTemplate类的对象实例以属性注入的方式依赖注入 进来) 【例 914】 Spring 编程式的事务管理的代码示例 TransactionDefinition td = new TransactionDefinition()。 TransactionStatus status = (td)。 try{ 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 10/18 页 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource)。 (Update InComeCount set money=money100 where id = 39。 123439。 )。 (Update OutComeCount set money=money100 where id = 39。 123439。 )。 (status)。 } catch(Exception e){ (status)。 } 在 Spring 框架 中实现编程式的事务管理 的实例 下面通过某个项目中的 持 久层中的 DAO 组件中的某个数据访问方法中应用事务和不应用事务所出现的各种结果,让读者体验事务中的“原子性” 、“一致性” 和 Spring 框架中的编程式的事务管理的具体实现步骤。 对 DAO 组件中的某个数据访问方法不应用事务控制技术 在下面的 DAO 组件中的 updateOneUserInfo。j2ee项目实训spring框架技术——第9章spring中的事务管理技术及实现第2部分
相关推荐
1、开关电源原理及其应用第一部分:功率电子器件第一节:功率电子器件及其应用要求功率电子器件大量被应用于电源、伺服驱动、变频器、电机保护器等功率电子设备。 这些设备都是自动化系统中必不可少的,因此,我们了解它们是必要的。 近年来,随着应用日益高速发展的需求,推动了功率电子器件的制造工艺的研究和发展,功率电子器件有了飞跃性的进步。 器件的类型朝多元化发展,性能也越来越改善。 大致来讲,功率器件的发展
户方所提出的这个要求,其实从具体的技术难度来说没有什么困难的,问题是如果按照常规的实现方式, 则是需要修改原始系统的代码来扩展功能。 但是开发者又不希望对所涉及的业务类的代码进行修改。 因为如果采用这样的实现策略进行的话,可能将会增加大量的工作量。 特别是应用系统的架构和分层设计时不良好的情况下,此问题将更加突出。 解决此问题的比较好的方法是应用 Spring 框架 AOP 中的
1、汇诚科技 :本说明书中添加超链接的按 可看到内容。 一、 131 条指令 大多数指令执行时间为单个时钟周期 32 个 8 位通用工作寄存器 全静态工作 工作于 16 性能高达 16 只需两个时钟周期的硬件乘法器 16K 字节的系统内可编程 写寿命 : 10,000 次 具有独立锁定位的可选 码区 通过片上 序实现系统内编程 正的同时读写操作 512 字节的 写寿命 : 100,000 次
程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 6/13 页 务 组 件 类 的 对 象 实 例 , 一 般 是 采 用 WebApplicationContextUtils 工 具 类 从ServletContext 环境对象中获得 WebApplicationContext;当然,更简单和方便的方式便是 继承 Spring 框架的 ActionSupport 类。 因为
he 缓存框架 的 系统包文件 放入 到 Web 应用系统的 WEBINF\lib 目录 中 主要组件 为 文件,将该文件 放入 到 Web 应用系统的 WEBINF\lib目录 下。 最后的结果请见图 所示的状态结果。 3)添加 Jakarta Commons Logging 组件 由于 OSCache 缓存框架 组件 需要应用 Jakarta Commons Logging 来处理日志信息
rator 功能说明 1) 包中的三个实用类 在 包中提供有 ChartDeleter、 DisplayChart 和 ServletUtilities 三个实用工具类。 这些工具类的功能说明文字请见图 所示的 JFreeChart 框架 API 帮助内容的图示,读者可以参考这些 API 帮助进一步地了解它们的功能。 2) 类的主要功能 JFreeChart 在工作过程中