반응형
영속성 컨텍스트의 이점은 동일성을 보장하고 트랜잭션을 지원하는 쓰기 지연과 변경 감지, 지연 로딩이다.
Member member1 = em.find(Member.class, "member1");
Member member2 = em.find(Member.class, "member2");
동일성을 비교했을 때 true가 나온다 1차 캐시로 반복 가능한 읽기 등급의 트랜적션 격리 수준을 데이터베이스가 아닌 애플리케이션 차원에서 제공한다.
transaction.begin();
em.persist(member1);
em.persist(member2);
transaction.commit();
트랜잭션을 시작하고 em.persist를 해도 INSERT SQL을 데이터베이스에 보내지 않는다.
마지막에 commit을 진행해야 INSERT SQL을 보낸다.
//영속
Member member = em.find(Member.class, 150L); //데이터 찾고
member.setName("ZZZZ"); //데이터 변경
엔티티를 변경하기 위해서는 이렇게 값만 바꾸면 된다.
값을 바꾸면 commit 되는 시점에 flush()가 호출이 되면서 스냅샷과 Entity를 비교를 하고 바뀐 데이터가 있다면 쓰기 지연 SQL 저장소에 Update 쿼리를 저장해 두고 반영한다.
다음 강의에서는 플러시에 대해 알아본다.
자바 ORM 표준 JPA 프로그래밍 - 기본편을 참고하여 공부하였습니다.
반응형
'Data Base > JPA' 카테고리의 다른 글
[JPA] : 준영속 상태 (0) | 2022.03.23 |
---|---|
[JPA] : Flush(), 플러시에 대해서.. (0) | 2022.03.23 |
[JPA] : 영속성 컨텍스트(1) (0) | 2022.03.21 |
[JPA] : JPA 간단 개발과 JPQL 확인하기 (0) | 2022.03.20 |
[JPA] : JPA 사용을 위한 프로젝트 셋팅과 간단 설명 (0) | 2022.03.19 |
댓글