• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

em.close()

20.09.19 21:52 작성 조회수 230

9

현재는 em.close를 하고 name은 지금 select가 되어 가져올수가 있네요. clear를 하면 catch문으로 가는것이 맞네요..

뭔가 JPA 업데이트가 된걸까요..흠....

 Member m1= em.getReference(Member.class,member1.getId());
System.out.println("m1.getClass() = " + m1.getClass());

em.close();
System.out.println("m1.getUserName() = " + m1.getUserName());

System.out.println(" =============== ");
tx.commit(); //이시점에 DB 쿼리가 날라감
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
} finally {
em.close();
}
emf.close();
}

답변 1

답변을 작성해보세요.

6

안녕하세요. 윽이럴뚜가님^^

하이버네이트가 업데이트가 되면서, 트랜잭션이 살아있으면 em.close()를 호출해도 완전히 닫히지 않은 읽기 가능 상태가 됩니다.

다음 내용을 한번 읽어보시면 도움이 되실꺼에요.

https://www.inflearn.com/questions/53733

추가로 실무에서는 트랜잭션을 먼저 종료하고, 그 다음에 em.close()를 호출하기 때문에 크게 고민하지 않으셔도 됩니다^^

도움이 되셨길 바래요.