文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发软件工程JAVA设计模式之事务处理
精品推荐
特别推荐
·Tomcat中用web.xml控制Web应用详解
·计算机网络工程课程讲解
·COM, COM+ and .NET 的区别
·ISO9000:2000 质量管理八大原则(1)
·Struts框架及其在Web开发中的应用
·献给汇编初学者-函数调用堆栈变化分析
·质量管理的十三项步骤和八项原则(1)
·质量管理体系审核全解(1)
·WinCE.Net平台下电力巡检仪数据同步研究与实现
·黑盒测试和白盒测试
·黑客程序设计
·软件自动化测试流程
·详述RPG游戏引擎的设计原理
热点TOP10
·Visual Studio 2005集成开发环境图解
·Linux BOOTLOADER全程详解(Arm S3C2410)
·清除window 2000/XP系统中的无用设备的驱动程序
·gsoap中文文档(8.1.1)
·如何为嵌入式开发建立交叉编译环境
·ISO9000:2000 质量管理八大原则
·Vista新技术:WCF开发指南之构建服务
·UML类图详解(1)
·ISO9000:2000 质量管理八大原则(1)
·商场荧屏导购展板系统软件需求说明书
·Tomcat中用web.xml控制Web应用详解
·使用ADS1.2进行嵌入式软件开发
·VC中利用多线程技术实现线程之间的通信
·编写质量手册
·软件工程-软件目的需求开发与管理
·软件项目质量管理经验谈
·.NET 数据访问架构指南
·献给汇编初学者-函数调用堆栈变化分析
·软件与并发巨变 不得不面对的革命
·管理信息系统需求调研分析指南

JAVA设计模式之事务处理

日期:2007年5月3日 作者: 查看:[大字体 中字体 小字体]


    事务处理是企业应用需要解决的最主要的问题之一。J2EE通过JTA提供了完整的事务管理能力,包括多个事务性资源的管理能力。但是大部分应用都是运行在单一的事务性资源之上(一个数据库),他们并不需要全局性的事务服务。本地事务服务已然足够(比如JDBC事务管理)。
    本文并不讨论应该采用何种事务处理方式,主要目的是讨论如何更为优雅地设计事务服务。仅以JDBC事务处理为例。涉及到的DAO,Factory,Proxy,Decorator等模式概念,请阅读相关资料。
    也许你听说过,事务处理应该做在service层,也许你也正这样做,但是否知道为什么这样做?为什么不放在DAO层做事务处理。显而易见的原因是业务层接口的每一个方法有时候都是一个业务用例(User Case),它需要调用不同的DAO对象来完成一个业务方法。比如简单地以网上书店购书最后的确定定单为例,业务方法首先是调用BookDAO对象(一般是通过DAO工厂产生),BookDAO判断是否还有库存余量,取得该书的价格信息等,然后调用CustomerDAO从帐户扣除相应的费用以及记录信息,然后是其他服务(通知管理员等)。简化业务流程大概如此:
    注意,我们的例子忽略了连接的处理,只要保证同一个线程内取的是相同的连接即可(可用ThreadLocal实现):

    首先是业务接口,针对接口,而不是针对类编程:
  1. public interface BookStoreManager{
  2.           public boolean buyBook(String bookId,int quantity)throws SystemException;
  3.           ....其他业务方法
  4.     }

    接下来就是业务接口的实现类??业务对象:
  1. public class BookStoreManagerImpl implements BookStoreManager{
  2.          public boolean buyBook(String bookId)throws SystemException{
  3.               Connection conn=ConnectionManager.getConnection();//获取数据库连接
  4.               boolean b=false;
  5.              
  6.               try{
  7.                   conn.setAutoCommit(false);  //取消自动提交
  8.                   BookDAO bookDAO=DAOFactory.getBookDAO();
  9.                   CustomerDAO customerDAO=DAOFactory.getCustomerDAO();
  10.                     //尝试从库存中取书
  11.                   if(BookDAO.reduceInventory(conn,bookId,quantity)){
  12.                        BigDecimal price=BookDAO.getPrice(bookId);  //取价格
  13.                        //从客户帐户中扣除price*quantity的费用
  14.                        b=
  15.                        CustomerDAO.reduceAccount(conn,price.multiply(new BigDecimal(quantity));
  16.                        ....
  17.                        其他业务方法,如通知管理员,生成定单等.
  18.                         ...
  19.                        conn.commit();   //提交事务
  20.                        conn.setAutoCommit(true);
  21.                   }
  22.                }catch(SQLException e){
  23.                   conn.rollback();   //出现异常,回滚事务
  24.                   con.setAutoCommit(true);
  25.                   e.printStackTrace();
  26.                   throws new SystemException(e);  
  27.                }
  28.                return b;
  29.          }
  30.     }

    然后是业务代表工厂:  
  1.   public final class ManagerFactory {
  2.       public static BookStoreManager getBookStoreManager() {
  3.          return new BookStoreManagerImpl();
  4.       }
  5.    }


[1] [2] [3] [4] [5] [6] 下一页 




上一篇:软件与并发巨变 不得不面对的革命

下一篇:visitor模式概念——visitor模式进一步

JAVA设计模式之事务处理 相关文章:
·3DS Max 7卧室效果图设计:建模篇
·VB+Access设计图书管理系统
·如何建立一个网站?规划、设计、目的、原则、宣传
·飞机订票系统设计
·华北水利水电学院新校区校园网规划与设计
·校园网网络方案设计及分析
·Java图形用户界面设计
·如何以安全模式启动计算机
·英文字体创意设计及应用作品欣赏
·javascript+xml实现二级下拉菜单,不会被任何标签或元素遮住
JAVA设计模式之事务处理 相关软件:
·美工设计教程
·Dreamweaver 网页设计
·C语言程序设计
·Photoshop CS中文版平面设计师标准案例教程
·Photoshop CS经典创意设计200例
·Photoshop 7.0 平面 广告 装帧设计100例
·Windows环境下32位汇编语言程序设计
·远潮自我形象设计系统
·PhotoShop7 设计百例 + 经典实例教程 + 滤镜教学
·建筑抗震设计规范GB50011-2001

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot