준영속 상태

Mina Park·2022년 8월 27일
0
  1. 개념
  • 영속 상태의 엔티티를 영속성 컨텍스트에서 분리
  • 영속성 컨텍스트가 제공하는 기능 사용 X
  1. 분리 방법
  • em.detach(entity): 특정 엔티티만
  • em.clear(): 영속성 컨텍스트 완전히 초기화
  • em.close(): 영속성 컨텍스트 종료
  public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        EntityManager em = emf.createEntityManager(); //행동 단위마다 entity manager 생성

        EntityTransaction tx = em.getTransaction();
        tx.begin(); //트랜잭션 시작

        try {

            //영속
            Member findMember1 = em.find(Member.class, 150L);
            findMember1.setName("update name"); //dirty checking

            //준영속
            em.detach(findMember1); //특정 엔티티만
            //em.clear() //영속성 컨텍스트 전체 초기화

            Member findMember2 = em.find(Member.class, 150L); //쿼리가 새로 날아감(1차 캐시에 없으므로)

            System.out.println("====================");
            tx.commit(); //업데이트 쿼리 호출X

        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close(); //자원 사용 종료 후에는 entity manager 클로즈
        }

        emf.close();
    }

0개의 댓글