Ben*_*ons 7 hibernate optimistic-locking
在什么情况下通过Hibernate明确地从@OneToMany关系中排除乐观锁定?
我一直在阅读有关Hibernate的帖子,它基本上表示对子实体的任何更新都会导致对父实体的乐观锁定,这通常是不需要的.这里的关键词通常是 ......任何人都可以更准确地解释你何时或不需要乐观锁定这样的关系?
以下是用于演示乐观锁定排除的代码示例:
// Bars - these are specifically excluded from optimist lock
// for the object, since we don't want to obtain optimistic
// lock when we add a new bar
@OptimisticLock(excluded = true)
@OneToMany
@JoinColumn(name = "FOO_ID", nullable = false, updatable = false)
private List<FooBar> bars = new LinkedList<FooBar>();
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 10
基本上,当父级逻辑上"拥有"其子级时,您需要对一对多关系进行乐观锁定,换句话说,当父级和子级作为一个整体被修改时.以相同形式呈现给用户的Order由OrderLines 组成的可以是这种关系的示例.
否则,当应该单独修改子项时,应将它们排除在乐观锁定之外.Topic用Posts可以作为这种情况的一个例子.
从技术上讲,这个问题与关系的方向性有关.乐观锁定的目的是防止丢失修改,因此当需要丢失修改时,您需要为一对多关系启用它.这种情况发生在父亲是关系的拥有方时,换句话说,当一对多关系是单向的时(请注意,这是建模关系的自然选择,例如Order- OrderLine).
在双向一对多关系的情况下,"多"侧是关系的拥有方,因此"一"侧的关系的修改不会影响数据库,因此它们不会丢失.
| 归档时间: |
|
| 查看次数: |
5029 次 |
| 最近记录: |