JPA(2) - 영속성에 대하여

UkJJang·2021년 9월 5일
0

인프런 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 (https://www.inflearn.com/course/ORM-JPA-Basic/dashboard) 을 들으며 정리하였습니다.

영속성 - 엔티티를 영구 저장하는 환경 이라는 뜻을 가지고 있다.

  • 영속성 컨텍스트는 1차 캐시를 통하여 1차 캐시에 있는 데이터라면 쿼리문을 날리지 않고 1차캐시에 없다면 데이터베이스에서 조회하여 1차캐시에 담아 동작하며 캐시에 있는 데이터가 변경이 되더라도 따로 update 쿼리문을 실행시켜 주지 않아도 자동으로 변경된다.
    또한 1차 캐시에 담아 두고 사용하기 때문에 커밋이 바로 실행되지 않고 끝나는 시점에 실행이 되기 때문에 쓰기 지연 기능이 보장된다.
  • 영속성 컨텍스트에서 관리가 되기 때문에 객체간의 동일성이 보장된다.

영속성 생명주기

  • 비영속 - 영속성 컨텍스트와 관계가 없는 상태를 뜻한다.
  • 영속 - 영속성 컨텍스트가 객체를 관리하는 상태를 뜻한다.
  • 준영속 - 영속성 컨텍스트가 관리하지 않도록 하는 상태를 뜻한다.
  • 삭제 - 데이터베이스에서 데이터가 지워지도록 하는 상태를 뜻한다.
public class JpaEx {
	class Member {
    		String name;
                Member(String name) {
                    tihs.name = name
               }
    	}
        
        public static void main(String args[]) {
        	
            // 데이터베이스 각 1개에 해당한다.
            EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa unit이름");
            
            // 요청이 들어올 때마다 새로 생성되는 것
            EntityManager manager = factory.createEntityManager();
        	
            // 비영속 상태 단순히 객체만 생성했기 때문에 관계가 없다.
            Member member = new Member("test1");
            
            // 영속상태 : 영속성 컨텍스트가 이제 member 객체를 관리한다.
            manager.persist(member);
            
            // 준영속 상태 : 영속성 컨텍스트가 이제 member 객체를 관리하지 않는다.
            manager.detach(member);
            
            // 삭제 : 데이터베이스에서 지워진다.
            manager.remove(member);
        
        }
}

flush

  • 영속성 컨텍스트의 내용을 데이터베이스에 반영하는 것.
  • 데이터베이스에 반영한다고 해서 영속성 컨텍스트를 비우지 않는다.
profile
꾸준하게 성실하게

0개의 댓글