首页 文章

JPA中的持久性上下文生命周期

提问于
浏览
0

我对 persistence context 及其生命周期感到有点困惑 .
假设我有一个简单的 DAO 类,如下所示 .

public class UserDao
{
    @PersistenceContext
    private EntityManager manager;

    public User getUserById(Integer id)
    {
     return manager.find(User.class, id); 
    }

    public User getUserByName(String name)
    {
        Query q = manager.createQuery("SELECT u FROM User u WHERE u.name = ?1");
        q.setParameter(1, name);

        @SuppressWarnings("unchecked")
        List<User> list = (List<User>) q.getResultList();

        if(!list.isEmpty())
         return list.get(0);

        return null;
    }  
}

在我的理解中, EntityManager 上的每个方法调用都是
就像一个事务本身一样,所以创建了一个持久化上下文
检索结果或启动更改后立即关闭,
并且返回的实体是分离的 .

Please correct me if I'm wrong.

现在即使在上面的一种方法中使用 EntityManager 两次,两个独立的持久化上下文会一个接一个地发挥作用,是吗?

仅当持久性conext尚未关闭时, EntityManager 的调用才会返回托管实体,并且当我们处于事务范围内时会发生这种情况 .

我似乎不清楚我在问什么,但我只是希望你验证我的知识或提供更多的信息,感谢你的时间和耐心 .

1 回答

相关问题