建立一个 Derby 日历,第 3 部分: 使用事务和锁定(上)
2010-04-19 00:00:00 来源:WEB开发网核心提示: 公用事件日历可能遇到的问题第 2 部分中,您花费了很大的精力去区分输入的数据以避免并发问题,建立一个 Derby 日历,第 3 部分: 使用事务和锁定(上)(3),但是这意味着什么呢? 如果多个日历用户同时处理同一天的数据就会出现并发问题,有时候没有关系,应用程序的概念证明只需要能够让多个用户添
公用事件日历可能遇到的问题
第 2 部分中,您花费了很大的精力去区分输入的数据以避免并发问题。但是这意味着什么呢?
如果多个日历用户同时处理同一天的数据就会出现并发问题。有时候没有关系。比方说,只要不修改数据,无论一个、两个还是 137 个用户同时查看某一天的事件都没有关系。
假设两个用户都在查看同一个事件:2005 年 10 月 28日,为即将退休的程序员举行的典礼。两个人同时在屏幕上看到了这一事件。Bob 决定修改描述,说明地点已经改在了一个安静的饭馆,而 Troy 则决定改为游乐场。当两个人都保存所做的修改时,谁会赢呢?如果 Bob 首先保存,Troy 的修改就会将其覆盖掉,而两人毫不知情。
为了避免这种情况,必须使用事务、锁定和隔离级别。
事务、锁定和隔离级别
事务是一组数据库操作,作为一个整体要么都成功,要么都失败。比方说,假设有一些经过相邻两天的事件,如一个持续两天的会议。如果移动一个事件,另一个事件也必须移动。
因此,如果发出 SQL update 语句成功修改了第一个事件,而修改第二个事件的 update 语句失败了,则必须撤销或者回滚第一个操作。
事务通过建立必须全部成功的一组动作解决了这个问题。
因此创建事务和执行动作时,比如插入数据,只有当完成或者提交事务之后动作才能生效。但这并不是说看不到更改,无论是否提交都能看到修改的情况。
问题是“其他人谁能看到?”这正是本教程探讨锁和隔离级别的原因。
对应用程序的修改
本教程将从两个方面修改应用程序。
首先是解决可用性的问题。应用程序的概念证明只需要能够让多个用户添加和显示事件。为了方便用户,还需要增加更简单的日期管理和事件编辑能力。
更多精彩
赞助商链接