[JPA]持続性管理-Entityライフサイクル



JPAで最も重要な2つ▼🏻

  • オブジェクトをリレーショナル・データベース
  • にマッピングする.
  • 持続コンテキスト
  • 永続性コンテキストを理解する前に、JPAのEntityライフサイクルを理解して、永続性コンテキストで何が起こるかを理解してください.

    終了ライフサイクル


    -非永続

    (new/transient) : 영속성 컨텍스트와 전혀 상관없는 새로운 상태
    Member member = new Member();
    member.setId(1L);
    member.setName("kitty");
    
    // -> jpa에서 전혀 관리되지 않는 상태이다.

    -永続的

    managed : 영속성 컨텍스트에 관리되는 상태
    Member member = new Member();
    member.setId(1L);
    member.setName("kitty");
    
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("name");
    EntityManager em = emf.createEntityManager();
    em.getTransaction.begin();
    
    em.persist(member); // 영속성 컨텍스트에 저장
    
    em.persist(member)は、データベースに直接保存されていないことに注意してください.insert SQLは、永続性コンテキストに格納される.

    -永遠に

    detached : 영속성 컨텍스트에서 분리된 상태
    Member member = em.find(Member.class, 1L);
    member.setName("catty");
    em.detach(member);
    
    tx.commit();
    
    // -> commit이 되기 전 memeber는 영속성 컨텍스트에서 분리 되었기 때문에
    // update 쿼리갸 실행되지 않는다.
    準永久状態にする方法
  • em.detach(entity);
  • em.clear();
  • em.close();
  • -削除

    remove : 영속성 컨텍스트에서 삭제된 상태
    Member memeber = em.find(Member.class, 1L);
    em.remove(member); // delete SQL 생성,저장
    tx.commit(); // delete SQL 실행

    リファレンス


    Java ORM標準JPAプログラミング-基本編 Java ORM標準JPAプログラミング(金英漢)

    あなたのフィードバックを歓迎します🤗