gpt4 book ai didi

java - JPA:无状态 session Bean 和托管实体

转载 作者:行者123 更新时间:2023-12-01 18:51:29 27 4
gpt4 key购买 nike

假设我有一个名为 Foo 的 JPA 实体,具有 String myStr 属性;

当我现在像这样定义无状态 session bean 时:

@Stateless
@LocalBean
public class FooBean {

@PersistenceContext(unitName="foo-pu")
private EntityManager em;

public Foo getFoo(int id) {
return em.find(Foo.class,id);
}

public void changeMyStr(Foo entity) {
entity.setMyStr("fooStr");
}

}

如果我通过 getFoo() 传递之前获取的 Foo 对象,在 changeMyStr() 中所做的更改是否会保留?

最佳答案

只要您调用getFoo(...)changeMyStr(...)在同一交易内进行,更改为 Foo如果该事务已提交,则实例应该被持久化。一旦您离开事务,实体通常会分离,因此如果您调用 getFoo(...)在一笔交易中和 changeMyStr(...)在另一个中,changeMyStr(...) 内进行的更改(以及在原始事务之外进行的任何其他更改)将不会被持久化。

如果您使用extended persistence context ,实体在离开原始事务时不会分离,但这是一种相当不寻常的情况。阅读 this articlethis one了解更多详情。

关于java - JPA:无状态 session Bean 和托管实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798783/

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