0

我在对象树中有一个对象,它由 nhibernate 乐观锁定功能“保护”。

如果我捕捉到事务提交中发生的 staleobjectexception,我必须手动遍历树,但是如果事务额外提交了一些独立的对象 - 这些都丢失了......:(

两者都让我相信架构中的错误

但正确的方法是什么?

每个对象树的单个事务,不要在 staleobjectexception 上构建冲突处理,...?

我对我目前的方法有一种不好的感觉......

4

1 回答 1

0

我想附上我的观点,我的经验。

(所以它不一定是你问题的答案)。我喜欢你/我们确实质疑我们自己的代码、我们自己的设计/架构——这是一个兆头。糟糕的是,如果我们忽略它...

有错误吗?

这是一组应该遵循的规则:最佳编码实践

其中之一是(摘录):

保持代码简单

程序员编写的代码应该很简单。实现简单事物的复杂逻辑应保持在最低限度,因为将来代码可能会被其他程序员修改。一个程序员实现的逻辑可能对另一个程序员来说并不完全合理。因此,始终保持代码尽可能简单

换句话说:如果它看起来不是好的架构,那就不是。如果你不喜欢它,其他人也不会喜欢它。

版本控制,如何(建议)

好吧,下面我说明了一些常见的方法,我们确实适用于版本控制。

  • 版本控制仅对业务对象有用(它不应超过域中所有对象的 20%)。其他(CodeLists,如货币、国家...)没有版本控制。
  • 每个对象对其树都有自己的管理(CRUD 操作)。在这种情况下,只有这个对象是版本化的。例如,如果 Address 只能与 Person 一起存在,则两个对象都在一次遍历(创建或修改 Person)期间存储。只有人有版本

就是这样。真的,没有比这更复杂的了。但如果这不能回答你的问题,我确实理解......我只是想将我的意见附加到这个讨论中。

于 2013-05-25T17:59:41.487 回答