[Spring] JPA flush
·
Back end/Spring Project
1. flush의 개념flush는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 과정입니다.여기서 중요한 점은 영속성 컨텍스트를 비우지 않는다는 것입니다.즉, 1차 캐시(영속성 컨텍스트)는 그대로 유지되며, 단순히 SQL 저장소에 쌓여있던 쿼리들이 데이터베이스로 전송됩니다.2. flush의 특징1차 캐시(영속성 컨텍스트)는 유지됨→ clear()처럼 캐시를 비우지 않습니다.쓰기 지연 SQL 저장소의 쿼리를 DB에 반영→ em.persist()나 entity.setName() 등으로 변경된 내용을 DB에 즉시 보냅니다.트랜잭션을 끝내는 것이 아님→ flush() 호출 후에도 트랜잭션은 여전히 활성 상태입니다.동기화 목적→ JPQL 실행 전, 트랜잭션 커밋 직전에 DB와 영속성 컨텍스트를 맞추기 위해..
[Spring Project] 스프링 데이터 JPA 완전 정복: CRUD부터 메서드 자동 생성까지
·
Back end/Spring Project
💡 스프링 데이터 JPA란? 스프링 부트와 JPA만으로도 개발 생산성을 크게 높일 수 있지만, 여기에 스프링 데이터 JPA를 활용하면 리포지토리 구현체 없이 인터페이스만으로도 데이터 접근 기능을 손쉽게 구현할 수 있어, 개발해야 할 코드가 눈에 띄게 줄어듭니다. 반복적으로 작성해오던 CRUD 기능도 스프링 데이터 JPA가 기본적으로 제공하므로, 개발자는 핵심 비즈니스 로직에만 집중할 수 있습니다.관계형 데이터베이스를 사용하는 실무 환경이라면, 스프링 데이터 JPA는 이제 선택이 아닌 사실상 필수적인 기술입니다.📌 스프링 데이터 JPA 주요 기능기본적인 CRUD 기능 자동 제공 (save, findById, delete, findAll 등)메서드 이름만으로 조회 기능 구현 (findByName, fin..
[Spring Project] JPA 핵심: EntityManager와 주요 메서드 정리 (persist, find, createQuery)
·
Back end/Spring Project
이번 포스팅에서는 JpaMemberRepository 코드를 예로 들어 JPA의 핵심 객체인 EntityManager와, 이를 이용한 대표적인 메서드인 persist, find, createQuery 사용법을 정리해보겠습니다.💡 EntityManager란? EntityManager는 JPA에서 엔티티(객체)를 데이터베이스에 저장, 조회, 수정, 삭제하는 등 모든 데이터베이스 작업을 담당하는 핵심 객체입니다. private final EntityManager em;public JpaMemberRepository(EntityManager em) { this.em = em;} 위처럼 생성자 주입을 통해 EntityManager를 전달받으면, 해당 Repository 클래스 내부에서 자유롭게 데이터베이..