Posted on 2006-10-25 10:27
英雄 阅读(648)
评论(0) 编辑 收藏
对于事务,往往有两方面需求,一方面是希望几个动作要么全部做了,要么全部当没发生过;另一方面则是同步的需求,希望这一系列动作是在一瞬间完成,就是在这段时间没有别人的动作发生。
db提供了事务的支持,虽然各个数据库支持的细节还不太一样,但都在这两方面的范畴内。
应用系统是db+应用软件的产物。所以在应用系统中满足事务的需求就不能仅仅从db获得支持。比如,一个请求的处理既要改表,又要删除文件。对于第一方面的需求,如果要回滚事务,db可以回滚表,文件却得自己删除。第二方面的需求,db可以提高事务隔离级别,或lock多个表,对于应用软件内存的共享资源就得自己设置锁监控。(有时候用户希望在几个请求处理来回中实现不被别人改表。)
因为事务控制细节不一样,最麻烦的是怎么移植数据库。我想,不如这样使用db的事务机制。只使用它的回滚功能。对于同步功能,使用监控内存对象来完成。这样整个系统统一使用数据库的对第一方面的需求支持就可以(jdbc好像使用默认隔离级别就行)。不知道这样的理解有没有问题,抛砖引玉,敬请大家讨论!