我正在使用DAL服务来检索数据库中的数据。
让我们观察一下从数据库中检索一个对象的最简单的情况。
在检索该对象后,我根据一些业务逻辑对其属性进行了一些更改, 而且我想要更新持久数据库中的对象。
然而,其他一些客户端(甚至可能是我不知道存在的客户端)改变了数据库中下划线对象的状态,并且在我尝试更新时我发现了这一点。
在这种情况下我该怎么做?
我应该抛出异常吗?
我是否应该尝试仅更新我更改的字段?
当我根据持久数据执行业务逻辑时,是否应该锁定该表以进行写入?
盖
答案 0 :(得分:3)
我认为你应该做的事情取决于你想要达到的目标。 我看到你的主要选择:
预先锁定 - 主要优点&缺点 - 占用数据库直到你提交,更简单。
请勿事先锁定,合并以防其他人更新 - 主要劣势 - 合并可能非常复杂
我会选择第一个,但我会尝试最小化锁定时间(即我想知道在锁定对象之前我想要做的所有更改 /强>)。
任何方式我都不认为这是一个特例。所以我不会抛出异常。
答案 1 :(得分:0)
这是非常主观的,这取决于你究竟想要的是什么。
我应该抛出异常吗?
我是否应该尝试仅更新我更改的字段?
在我执行商务时,是否应该锁定该表以进行写入 基于持久数据的逻辑?