一个关于事务的问题,想请教大家

03-12-15 henry.t
    

小弟最近开始钻研大名顶顶的《MASTERINGEJB2.0》,看到事务的时候突然有歌比较原始的问题,请教如下:

当你正确的使用事务的时候,它将向你提供4个保证,ACID。也就是

1,ATOMICITY 2, CONSISTENCY 3, ISOLATION 4, DURABILITY

看到第三项ISOLATION时我就有点胡涂了。

它说:在有多个事务同时操作一条记录的时候,其中一个事务将获得此记录的LOCK,这样其它事务就必须等这个事务结速操作并确释放LOCK以后才可以操作,所以ENTITY BEAN的数据库操作方法就必须设置成REQUIRED,

REQUIRESNEW或者MANDATORY,也就是说凡是操作数据库的操作都必须包含在事务里面。

那么我的问题如下,请大家帮忙解答

1,LOCK这个东西是不是只有在事务对他进行操作的时候才有的啊?如果是两个不是事务的操作对同一记录同时操作,还有没有LOCK?

2,我原来以为事务是让多个操作要么全做,要么都不做,这样才有意义

如果是只有一个单一的操作,比如说,就一条UPDATA的SQL语句,就没什么必要用了吧

3,反正我就是有点觉得把所有的ENTITYBEAN方法都弄成事务有点浪费了,请大家解释。

谢谢大家!

    

henry.t
2003-12-15 23:16

还有,书上说ENTITYBEAN 必须包含在事务里面的理由是:它操作数据库。那就奇怪了,以前写JSP,JAVABEAN的时候,操作数据库的时候多了,我只是在那些有多个操作数据库语句的方法里面加了事务,而那些只有一个操作语句之方法(比如修改一个用户的名字)就没有事务,到底有什么问题,我错了??

henry.t
2003-12-16 15:56

怎么没有人回答啊?我以前用JSP或者JAVABEAN操作数据库的方法里面,只要是单一操作就没有用事务,我是不是错了???????请解答!

yang_jh
2003-12-16 20:02

有l指令commit&rollback.但是@l指令只有在你

的AUTOCOMMITO成falser才谧饔.

同Lock是本身的C制,而且只有在FALSE的情r下它才能被算做

真正的有效

F在e例,我同r取得相同的B接.然後在B接(a&b)中分

eν还Pupdate幼.比如我F在aB接先绦update幼,但

是我不aB接下的@l指令M行commit/rollback幼,那N如果bB接

也想绦update幼鞯r候,此lupdate指令⒌却aB接的update

指令被commit/rollback,它才能绦.其@r候lock的嘞奘窃aB

接的手里.

yang_jh
2003-12-16 20:16

>2,我原来以为事务是让多个操作要么全做,要么都不做,这样才有意

>义如果是只有一个单一的操作,比如说,就一条UPDATA的SQL语句,就

>没什么必要用了吧

赌愕倪@}.我X得你的理解K]有e.事毡砭褪且一操作

要N全做,要N就rollback,也就是前面所做的都o效.如果象你f的那N

我徊僮鞯脑,然不需要用到事.但是你想想你的web每赡芟蚰阏f

的那.只要绦幸我坏牟僮.我想既然是web镁陀锌赡苁潜欢

人同r操作的或者象W上镎一套操作要在一起才能算是一完整

的事(@一套操作也叫一工作卧),也才能得到的commit幼