纸飞机
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
22 随笔 :: 28 文章 :: 30 评论 :: 0 Trackbacks
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年6月 (1)
2008年5月 (2)
2007年10月 (8)
2007年7月 (6)
2007年1月 (5)
文章分类
Database(10)
(rss)
Hibernate(1)
(rss)
J2EE基础(4)
(rss)
JAVA(1)
(rss)
JAVA DesignPattern(1)
(rss)
Spring(4)
(rss)
Weblogic(1)
(rss)
社论(1)
(rss)
职业生涯(3)
(rss)
文章档案
2010年1月 (4)
2008年5月 (10)
2008年4月 (8)
2007年10月 (3)
2007年6月 (1)
2007年5月 (1)
2007年3月 (1)
新闻档案
2007年9月 (1)
2007年1月 (1)
相册
个人照
为之动容
收藏夹
J2EE(2)
(rss)
Blog收藏
eako的专栏(Java相关)
oksonic(Java)
搜索
最新评论
1. re: Spring中ref local与ref bean区别:
了解,谢谢~~
--sim
2. re: Spring中ref local与ref bean区别:
知道了,哦。有一个spring配置文件的话,用local就可以了
--王鹏飞
3. re: Spring中ref local与ref bean区别:
谢谢了,非常感谢
--chenxinhu
4. re: 使用JDOM将数据库中的表数据读出转成XML及将XML内容写入数据库[未登录]
good!
--寻觅
5. re: Spring中ref local与ref bean区别:
谢谢
--yawaking
阅读排行榜
1. Spring中ref local与ref bean区别:(13217)
2. tar.gz与zip的区别(6709)
3. Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException(6102)
4. Commons-logging + Log4j 使用方法及常见问题(5174)
5. 转:dwr中的session error问题解决(4731)
评论排行榜
1. Spring中ref local与ref bean区别:(6)
2. 转:dwr中的session error问题解决(5)
3. Eclipse快速上手Hibernate.chm资料(5)
4. Eclipse中使用Ant来运行Junit的错误及解决方法(3)
5. Commons-logging + Log4j 使用方法及常见问题(2)
java事务管理
转自:http://blog.csdn.net/sunyadongwanghbjm/archive/2007/08/20/1751518.aspx
什么是事务:
首先,说说什么事务。我认为事务,就是一组操作数据库的动作集合。
事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示当系统或介质发生故障时,确保已提交事务的更新不能丢失。持久性通过数据库备份和恢复来保证。
Java中的事务处理
一般J2EE服务器支持三种类型的事务管理。即:JDBC事务,JTA事务,容器管理事务。
最好不要在程序中同时使用上述三种事务类型;并且,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面举两个例子说明JDBC及JTA事务,容器管理事务是在特定的框架中实现的(如:Spring的事务管理)
1. JDBC事务
public
String delete(String id)
...
{
String ID
=
id;
db
=
new
getConnection();
Connection con
=
db.getConnection();
try
...
{
con.setAutoCommit(
false
);
db.executeUpdate(
"
delete from helloworld where ID=
"
+
ID);
//
更新操作1
db.executeUpdate(
"
delete from helloworld _book where ID=
"
+
ID);
//
更新操作2
db.executeUpdate(
"
delete from helloworld_user where ID=
"
+
ID);
//
更新操作3
con.commit();
//
提交JDBC事务
con.setAutoCommit(
true
);
db.close();
return
“success”;
}
catch
(Exception e)
...
{
con.rollBack();
//
回滚JDBC事务
e.printStackTrace();
db.close();
return
“fail”;
}
}
如上例:更新操作1,2,3只有当三步操作都成功完成才进行提交,否则回滚已经进行的操作。这样,保证了数据的完整性,不会因为突然断电等特殊情况导致的数据错误。
2.JTA事务
JTA是J2EE事务服务的解决方案、描述了J2EE模型事务接口。JTA具有三个主要的接口:UserTransaction、TransactionManager、Transaction接口。这些接口共享公共的事务操作,如:commit()、rollback()。同时各自也有自己的操作。举例说明:
public
String delete(String id)
...
{
String ID
=
id;
db
=
new
getConnection();
db.getConnection();
UserTransaction transaction
=
sessionContext.getUserTransaction();
//
获得JTA事务
try
...
{
transaction.begin();
//
开始JTA事务
db.executeUpdate(
"
delete from helloworld where ID=
"
+
ID);
db.executeUpdate(
"
delete from helloworld _book where ID=
"
+
ID);
db.executeUpdate(
"
delete from helloworld _user where ID=
"
+
ID);
transaction.commit();
//
提交JTA事务
db.close();
return
”success”;
}
catch
(Exception e)
...
{
try
...
{
transaction.rollback();
//
事务回滚
}
catch
(Exception e)
...
{
e.printStackTrace();
}
exc.printStackTrace();
db.close();
return
“fail”;
}
}
3.容器事务管理
在Spring、Hibernate等框架中都有各自的事务管理功能。虽然表现形式有些差别,但都是在JAVA事务管理的基础上实现的。这里不进行介绍。
posted on 2010-01-18 16:55
纸飞机
阅读(766)
评论(0)
编辑
收藏
所属分类:
Spring
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Spring 框架简介(转)
Spring的Hibernate事务管理机制
spring事务管理
java事务管理
Powered by:
BlogJava
Copyright © 纸飞机