// 객체를 생성한 상태 (비영속)Membermemeber=newMember();member.setId("member1");member.setUsername("회원1");
2) 영속 (managed)
영속성 컨텍스트에 관리되는 상태
// 영속em.persist(member);
3) 준영속 (detached)
영속성 컨텍스트에 저장되었다가 분리된 상태
// 회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태em.detach(member);
4) 삭제 (removed)
삭제된 상태
// 객체를 삭제한 상태 (삭제)em.remove(memeber);
3. 영속성 컨텍스트의 이점
1차 캐시
동일성 (identity) 보장
트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)
변경 감지 (Dirty Checking)
지연 로딩 (Lazy Loading)
1) 앤티티 조회, 1차 캐시
// 엔티티 생성한 상태(비영속)Membermember=newMember();member.setId("member1");member.setUsername("회원1");// 1차 캐시에 저장됨em.persist(member);// 1차 캐시에서 조회MemberfindMember=em.find(Member.class,"member1");// 1차 캐시에서 없으니 데이터베이스에서 조회MemberfindMember2=em.find(Member.class,"member2");
2) 영속 엔티티의 동일성 보장
1차 캐시로 반복 가능한 읽기(REPEATABLE READ)등급의 트랜잭션 격리 수준을
데이터 베이스가 아닌 애플리케이션 차원에서 제공
Membera=em.find(Member.class,"member1");Memberb=em.find(Member.class,"member1");System.out.println(a==b);// 동일성 비교 true
댓글남기기