首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA:无状态会话bean和托管实体

JPA:无状态会话bean和托管实体
EN

Stack Overflow用户
提问于 2013-04-04 05:47:32
回答 1查看 1.5K关注 0票数 0

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

当我现在像这样定义一个无状态会话bean时:

代码语言:javascript
复制
@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()中所做的更改会持久化吗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-04 06:06:49

只要您对getFoo(...)changeMyStr(...)的调用是在同一事务内进行的,那么对Foo实例的更改就应该成为持久化的,前提是该事务已经提交。实体通常会在您离开事务后被分离,因此,如果您在一个事务中调用getFoo(...),而在另一个事务中调用changeMyStr(...),则在changeMyStr(...)中所做的更改(以及在原始事务之外所做的任何其他更改)将不会持久化。

如果使用extended persistence context,实体在离开原始事务时不会被分离,但这是一个相当不寻常的情况。有关更多详细信息,请阅读this articlethis one

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15798783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档