FrameWorks/JPA

JPA 기본 구조 & 영속성 컨텍스트

ABCD 2023. 8. 24.

기본 구조

  • EntityManagerFactory 초기화
  • DB작업이 필요할 때마다
    • EntityManager 생성
    • EntityManager로 DB조작
    • EntityTransaction으로 트랜잭션 관리
  • BUT!!! 스프링과 연동시에는 대부분 스프링이 대신 처리하므로 매핑 설정 중심으로 작업을 권장!

Entity기본 객체

  • EntityManagerFactory
    • Persistance 객체를 이용하여 _createEntityManagerFactory_메서드로 사용할 DB를 생성한다.
    • 해당 객체로 EntityManager 객체를 생성해준다.
    • EntityManagerFactory emf = Persistance.createEntityManagerFactory("jspbegin");
  • EntityManager
    • EntityManagerFactory 객체를 이용하여 DB를 조작할 Manager를 생성한다.
    • 해당 단위로 영속성 컨텍스트를 관리한다.
    • EntityManager manager = emf.createEntityManager();
  • EntityTransaction
    • EntityManager 객체를 이용하여 트랜젝션을 발생시킬 객체를 생성한다.
    • 트랜젝션을 발생시키는 객체(ex.persist, find, …)
    • EntityTransaction transaction = entityManager.getTransaction();

기본 코드 구조

EntityManagerFactory emf = Persistance.createEntityManagerFactory("jspbegin");
EntityManager manager = emf.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();

try{
  transaction.begin();

  ...(로직작업)


} catch ( Exception e) {
  e.printStackTrace();
  transaction.rollback();
} finally {
  manager.close();
}
emf.close();

영속 컨텍스트

 

  • EntityManager 단위로 영속성 컨텍스트를 관리한다.
  • 엔티티를 메모리에 보관한다.
  • 커밋 시점에 영속 컨텍스트의 변경 내역을 DB에 반영한다.
  • Application에 생성된 엔티티 객체를 우선 영속 컨텍스트에 객체를 저장한다.
    • 후에 commit() 시 DB에 저장된다.
    • 만약 commit() 전에 데이터에 데이터의 변경이 일어나면 UPDATE쿼리를 날린다.
728x90
반응형

'FrameWorks > JPA' 카테고리의 다른 글

JPA Entity 단위 기본 CRUD처리  (0) 2023.08.26
JPA 세팅 및 기초  (0) 2023.08.24

댓글

💲 추천 글