jpa - что происходит с постоянным объектом, обновленным и отсоединенным - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть постоянный объект (сеанс) внутри транзакции (управляемый менеджером объекта).
Я делаю некоторые изменения в этой сущности или связанных (достигаются с помощью 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    
      }
   }
}

Что произойдет с созданными объектами (сессией и связанными с ними тоже), когда после сброса я установлю для сеанса значение null: будут ли они сохранены? освободит ли ГХ память? и когда я перезагружаю его (вместе с находкой), EM перезагружает его с нуля (не используя предыдущий)?

...