什么时候明确排除乐观锁定(休眠)?

| 在什么情况下通过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>();
    
已邀请:
        基本上,当父级逻辑上“拥有”其子级时,换句话说,一次父级和子级整体被修改时,您需要对一对多关系进行乐观锁定。这种由
OrderLine
组成的of1ѭ以相同的形式呈现给用户,可以是这种关系的一个例子。 否则,当应单独修改儿童时,应将其排除在乐观锁定之外。 ѭ3example和
Post
可以作为这种情况的示例。 从技术上讲,这个问题与关系的方向性有关。乐观锁定的目的是防止丢失修改,因此,在可能丢失修改的情况下,需要针对一对多关系启用它。当父母是关系的拥有方时,换句话说,当一对多关系是单向的时,会发生这种情况(请注意,对诸如
Order
-
OrderLine
之类的关系进行建模是自然的选择)。 在双向一对多关系的情况下,\“多\”侧是该关系的拥有侧,因此,在\“ one \”侧的关系修改不会影响数据库,因此它们可以\不会迷路。     

要回复问题请先登录注册