jpa-更新和分离的持久实体会发生什么

时间:2018-09-12 11:44:31

标签: java jpa eclipselink

我在事务中有一个持久的实体(会话)(由实体管理器管理)。
我对该实体或相关实体进行了一些更改(使用getter进行了更改)。
与会话对象相关的对象数量可能会很大,因此我想保存当前对象(以及所有与级联相关的对象),释放内存并重新加载实体(所有相关对象都被延迟加载)以继续工作
这就是我打算工作的方式

@TransactionAttribute(TransactionAttributeType.REQUIRED)
function Session manageSession(Long sessionId) {
   Session session = null;
   if (sessionId == null) {
     session = new Session()
     .....Setting fields...
     em.persist(session);
   } else {
     session = em.find(Session.class,sessionId);
   }
   List<Long> objectIdToBeLinked = getRemainingUnlinkedObj();
   for (Long id : objectIdToBeLinked) {
      createRelatedObj(session, id) //here activities the create more and more objs to be linked to session)
      if (checkMemory) { //where checkmemory return true if we have no more mem space
        em.flush;
        Long sessionId = session.getId();
        session = null;
        manageSession(sessionId)M    
      }
   }
}

在刷新后,我将session设置为null时,创建的实体(会话和相关实体)会发生什么情况:它们将被保存吗? GC会释放内存吗?当我重新加载它(使用查找)时,EM是否从头开始重新加载它(不使用前一个)?

0 个答案:

没有答案