영속성 컨텍스트 3

JPA의 영속성 컨텍스트와 변경 감지(Dirty Checking)

영속성 컨텍스트와 변경 감지 완전 정복JPA로 개발을 하다 보면 아래와 같은 코드를 자주 보게 됩니다. @Transactionalpublic void updateUsername(Long id, String newName) { User user = userRepository.findById(id).orElseThrow(); user.setUsername(newName); // 이게 저장된다고?} Colored by Color Scriptercs 별도로 save()를 호출하지 않았는데, 값이 데이터베이스에 반영됩니다.이러한 동작은 JPA의 변경 감지(Dirty Checking) 기능 덕분입니다.이번 글에서는 이 원리가 어떻게 작동하는지 설명드리고, 실무에서 자주 발생하는 실수들과 실전 팁도 함..

스프링 2025.06.21

[JPA] 영속성 관리[5]

병합 : merge()merge() 메소드는 준영속 상태의 엔티티를 받아서 그 정보로 새로운 영속 상태의 엔티티를 반환한다.public class ExamMergemain {    static EntityManagerFactory emf =        Persistence.createEntitymanagerFactory("jpabook");        public static void main(String args[]) {        Member member = createMember("memberA", "회원1");        member.setUsername("회원명변경");        mergeMember(member);        }     static Member createMembe..

스프링 2024.12.10

[JPA] 영속성 관리[2]

영속성 컨텍스트의 특징 1. 영속성 컨텍스트는 엔티티를 식별자 값(@Id)으로 구분한다.    따라서 영속 상태는 식별자 값이 반드시 있어야 한다.2. 영속성 컨텍스트에 엔티티를 저장하면 JPA는 트랜잭션을 커밋하는 순간 엔티티를 데이터베이스에 반영하며, 이것을 플러시(flush)라 한다.3. 영속성 컨텍스트가 엔티티를 관리하면 다음과 같은 장점이 있다.1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 지연변경 감지지연 로딩 엔티티 조회 영속성 컨텍스트는 내부에 캐시를 가지고 있는데 이것을 1차 캐시라 한다. 영속 상태의 엔티티는 모두 이곳에 저장된다.1차 캐시의 키는 식별자 값(@Id)이고 이 값은 데이터베이스 기본 키와 매핑되어 있다.ex) Member member = em.find(Member.class..

스프링 2024.11.26
728x90
반응형