Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236382
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: Java

2007-12-20 11:45:46

典型的数据库jdbc中的事务处理: ACID (原子性、一致性、孤立性和持久性);
在进行数据库”锁”操作时可以选择不同的事务分离水平:
1>.READ UNCOMMITTED    效率高,但可能会有脏数据(修改数据时不排他读);
2>.READ COMMITTED       避免了脏数据(修改数据时排他读);
3>. REPEATABLE READ      对满足条件的数据行集进行锁定;
4>.SERIALABLE READ       最高级别,禁止插入;
两种重要的事务类型:JDBC 事务,JTA 事务 :
1>.JDBC 事务受数据库的事务管理器控制。在会话 Bean 内包含原有代码时,可能需要使用 JDBC 事务。 
要对某个 JDBC 事务进行编码,您调用 java.sql.Connection 接口的提交和回滚方法。事务开头不明确。事务以遵循最近提交、回滚或连接语句的第一个 SQL 语句开头。(此规则通常是准确的,但可能会随数据库供应商的不同而有所变化。) 
2>.JTA 事务允许您在不受事务管理器实施的情况下划分事务。J2EE SDK 利用 JTS 实施事务管理器。但您的代码不直接调用 JTS 方法,而是调用 JTA 方法,JTA 方法然后调用低级 JTS 例程。 
JTA 事务受 J2EE 事务管理器控制。您可能需要使用一个 JTA 事务,因为 JTA 事务可以把更新分发到多个来自不同供应商的数据库。某个数据库的事务管理器可能无法与异类数据库工作。 
两种常用的事务处理模型: FLAT 和NESTED(嵌套式事务),J2EE1.4目前只支持FLAT;
Java程序中用于事务处理的API: JTA
      在java中,JTA事务处理的编程起源于OMG(COBRA)的OTS(Object Transcation Service)标准,Sun公司对OTS进行java实现:JTS,JTS供系统级程序员使用,而进行组件开发的程序员应该关心的是上层的API:JTA,用的比较频繁的是JTA中的javax.transaction.UserTransaction接口。
在java中,可以实施3种事务处理控制: 1>.程序Bean控制 2>.容器控制 3>.客户端控制:
     程序Bean控制灵活但比较复杂;容器控制是在容器的部署文件中进行定义,比较简单;客户端控制的方法用的比较少,也相对复杂些,能保证网络连接出问题时客户端也能得到正确的事务信息。
在EJB中,Entity Bean只能使用容器控制的事务处理,因为其依赖ejbLoad()->商业方法()>ejbStore()方法完成数据处理;
在Bean部署文件中声明事务的属性:
1>.Required         指明该bean必须运行在事务中,没有现成的就新建一个;
2>.RequiresNew      指明每次运行都新建一个事务;
3>.Supports         指明该bean如目前正处于事务中的话就加入到事务中去,没有就算了;
4>.Mandatory       指明运行该bean时必须有一个事务正在运行让其加入,否则抛出异常;
5>.NotSupported     指明该bean不会运行于任何事务中;
6>.Never           指明该bean不但不会运行于任何事务中, 而且还会抛出异常。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=610633

阅读(1134) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~