gpt4 book ai didi

java - JPA2.0 和 EE6 使我的实体保持同步

转载 作者:行者123 更新时间:2023-12-01 17:31:48 24 4
gpt4 key购买 nike

我刚开始在企业应用程序中使用 ORM 工具。我们正在构建一个使用 JPA 2.0 和 EE6 的可扩展应用程序。我正在尝试找到一个很好的模式来构建我的应用程序,但我找不到一种方法来保持我的实体同步(我想汇集访问实体的 bean)。

一个例子:

我有一个群组:

@Entity
public class Group implements Serializable
{
@Id
private Long id;
@OneToMany
private List<MyUser> myUsers;

public Group()
{
}

public Long getId()
{
return id;
}

public void setId(Long id)
{
this.id = id;
}

public void addUser(MyUser u)
{
myUsers.add(u);
}
}

我有一个用户

@Entity
public class MyUser implements Serializable
{
@Id
private Long id;

public MyUser()
{
}

public Long getId()
{
return id;
}

public void setId(Long id)
{
this.id = id;
}

}

现在,如果我有一个无状态 Bean 来向组中添加或删除用户,则可能会出现该无状态 Bean 的另一个实例包含过时信息的风险。对此的最佳实践是什么?

最佳答案

我不确定你的设计问题到底是什么,因为无状态 bean 不应该保留...状态。您应该按需检索用户组,更新它,然后保留回数据库。如果您确实担心并发更新并需要更严格的控制,请尝试在实体上使用锁定模式:

  • JPA 1.0 支持通过版本号进行乐观锁定(OPTIMISTICOPTIMISTIC_FORCE_INCRMENT)。
  • JPA 2.0 添加了悲观锁定(INCRMENTPESSIMITIC_FORCE_INCRMENT)

仅当系统中对相同实体存在大量争用时才使用悲观锁定,因为它的扩展性不佳。

Additional Reading and Examples

关于java - JPA2.0 和 EE6 使我的实体保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com