首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> 移动开发教程
Java中数据库事务处理的实现-JSP教程,Java技巧及代码
作者:网友供稿 点击:391
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
 摘要 本文介绍在java中进行事务处理的方法,通过实例分别讲述了如何采用javabean、ejb组件实现j2ee应用服务器支持的jdbc事务、jta(java transaction api)事务。

  关键词 javabean,ejb, 数据库,事务处理,jta

  javabean

  javabean是用java语言编写的与平台无关的组件。它是描述java的软件组件模型,有点类似于microsoft的com组件的概念。在java模型中,通过javabean可以无限扩充java程序的功能,通过javabean的组合可以快速的生成新的应用程序。javabean可以实现代码的重复利用,对于程序的易维护性也有重大的意义。非可视化的javabean,在jsp程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离。javabean在服务器端的应用方面表现出了越来越强的生命力。

  ejb

  ejb技术定义了一组可重用的组件:enterprise javabeans。你可以利用这些组件,像搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个enterprise beans,在加上一些配置参数。最后,这些enterprise beans被配置到一个装了ejb容器的平台上。客户能够通过这些beans的home接口,定位到某个beans,并产生这个beans的一个实例。这样,客户就能够调用beans的应用方法和远程接口。ejb技术简化了用java语言编写的企业应用系统的开发、配置和执行。有三种类型的enterprise beans: session beans、 entity beans和message-driven beans。

  事务处理

  信息是任何企事业单位的重要资产,任何企业部门都包含着信息的流入、流出,任何企业部门都控制着某些信息。同时,信息必须在适当的时机传播给需要的人。而且,信息还需要安全约束,通常根据信息的类型和内容实施访问控制。为了保证数据的安全有效和正确可靠,数据库管理系统(dbms)必须提供统一的数据保护功能。

  事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从iso/iec所制定的acid原则。acid是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

  在下面我们列举一个使用sql server数据库进行事务处理的例子。主表是一个规章制度信息表(bylaw),主要字段有记录编号、标题、作者、书写日期等。两个子表分别是附件表(bylaw_affix)和文本信息表(bylaw_content)。表结构见图1所示。bylaw表的记录编号与bylaw_affix表的记录编号、bylaw_content表的记录编号是对应的,每次对规章制度信息的操作也就是对这三个表的联合操作。例如要删除规章制度中的一条记录,如果不使用事务,就可能会出现这样的情况:第一个表中成功删除后,数据库突然出现意外状况,而第二、三个表中的操作没有完成,这样,删除操作并没有完成,甚至已经破坏数据库中的数据。要避免这种情况,就应该使用事务,它的作用是:要么三个表都操作成功,要么都失败。换句话说,就是保持数据的一致性。所以,为了确保对数据操作的完整和一致,在程序设计时要充分考虑到事务处理方面的问题。


图1 示例表结构

  java中的事务处理

  一般情况下,j2ee应用服务器支持jdbc事务、jta(java transaction api)事务、容器管理事务。一般情况下,最好不要在程序中同时使用上述三种事务类型,比如在jta事务中嵌套jdbc事务。第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面我们列举两种事务处理方式。

  1、javabean中使用jdbc方式进行事务处理

  在jdbc中怎样将多个sql语句组合成一个事务呢?在jdbc中,打开一个连接对象connection时,缺省是auto-commit模式,每个sql语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个sql语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,sql语句不会得到事务确认。在最近一次commit()方法调用之后的所有sql会在方法commit()调用时得到确认。

public int delete(int sid) {
 dbc = new databaseconnection();
 connection con = dbc.getconnection();
 try {
  con.setautocommit(false);// 更改jdbc事务的默认提交方式
  dbc.executeupdate("delete from bylaw where id=" + sid);
  dbc.executeupdate("delete from bylaw _content where id=" + sid);
  dbc.executeupdate("delete from bylaw _affix where bylawid=" + sid);
  con.commit();//提交jdbc事务
  con.setautocommit(true);// 恢复jdbc事务的默认提交方式
  dbc.close();
  return 1;
 }
 catch (exception exc) {
  con.rollback();//回滚jdbc事务
  exc.printstacktrace();
  dbc.close();
  return -1;
 }
}

  2、sessionbean中的jta事务

  jta 是事务服务的 j2ee 解决方案。本质上,它是描述事务接口(比如 usertransaction 接口,开发人员直接使用该接口或者通过 j2ee 容器使用该接口来确保业务逻辑能够可靠地运行)的 j2ee 模型的一部分。jta 具有的三个主要的接口分别是 usertransaction 接口、transactionmanager 接口和 transaction 接口。这些接口共享公共的事务操作,例如 commit() 和 rollback(), 但是也包含特殊的事务操作,例如 suspend(),resume() 和 enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。例如,usertransaction 能够执行事务划分和基本的事务操作,而 transactionmanager 能够执行上下文管理。

  应用程序可以调用usertransaction.begin()方法开始一个事务,该事务与应用程序正在其中运行的当前线程相关联。底层的事务管理器实际处理线程与事务之间的关联。usertransaction.commit()方法终止与当前线程关联的事务。usertransaction.rollback()方法将放弃与当前线程关联的当前事务。

public int delete(int sid) {
 databaseconnection dbc = null;
 dbc = new databaseconnection();
 dbc.getconnection();
 usertransaction transaction = sessioncontext.getusertransaction();//获得jta事务
 try {
  transaction.begin(); //开始jta事务
  dbc.executeupdate("delete from bylaw where id=" + sid);
  dbc.executeupdate("delete from bylaw _content where id=" + sid);
  dbc.executeupdate("delete from bylaw _affix where bylawid=" + sid);
  transaction.commit(); //提交jta事务
  dbc.close();
  return 1;
 }
 catch (exception exc) {
  try {
   transaction.rollback();//jta事务回滚
  }
  catch (exception ex) {
   //jta事务回滚出错处理
   ex.printstacktrace();
  }
  exc.printstacktrace();
  dbc.close();
  return -1;
 }
}




文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ems图片格式转换(java)程序
·使用hashtable实现的购物车-ASP教程,ASP应用
·Java中数据库事务处理的实现-JSP教程,Java技巧及代码
·Oracle数据库操作类(c#)-.NET教程,C#语言
·移动短消息技术演进与业务发展浅析
·ASP生成静态网页,学习CASE的用法,以及“权限”的一种控制方法-ASP教程,组件开发
·中国电信发展移动通信的制式与频段选择
·ASP中access数据库的路径问题-ASP教程,数据库相关
·td-scdma系统移动台接入过程浅析
·JAVA与数据库连接方法(三)-JSP教程,数据库相关
最新文章
·fireworks表现vista毛玻璃朦胧效果_fireworks教程
·google adsense哪些情况会被k号_网赚技巧
·减少google adsense展示单元并不能提高收入_网赚技巧
·google adsense“允许域名”新功能很有用_网赚技巧
·于源:办南京人“淘宝”的大三学生_站长访谈
·谈谈网站策划和网站运营方面的点滴经验_站长心得
·美国网站兵败中国的10大思路性执行错误_站长心得
·付款流程中的电话确认_google推广
·google adsense的部分规则的背面_google推广
·googleadsense富翁排行榜最猛每月赚30万美元_google推广
相关主题
  • java中的测不准原理_java认证
  • java中两个字符串“Equals”和“==”的区别-JSP教程,Java技巧及代码
  • Java中调用外部命令-JSP教程,Java技巧及代码
  • java中四种操作xml方式的比较-JSP教程,Java与XML
  • Java中利用JMF编写摄像头拍照程序-JSP教程,Java技巧及代码
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭