01. 준영속 상태 준영속 상태란? 영속 상태에서 준영속 상태로 바뀌면, 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)됨을 말한다. 따라서 영속성 컨텍스트가 제공하는 기능을 사용하지 못한다. 영속 상태란? JPA가 관리하는 상태로, 1차 캐시에 올라간 상태이다. 02. 준영속 상태로 만드는 방법 1) em.detach(entity) : 특정 엔티티만 준영속 상태로 전환한다. 2) em.clear() : 영속성 컨텍스트를 완전히 초기화한다. 3) em.close() : 영속성 컨텍스트를 종료한다. 03. 준영속 상태 예시 코드 detach 예시 코드 em.detach(member) 코드는 더 이상 member를 JPA에서 관리하지 않도록 하는 것이다. detach 했기 때문에 update..
01. 플러시의 개념 플러시란? 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 것이다. 플러시라는 용어 때문에 혼동이 올 수 있는데, 영속성 컨텍스트를 비우는 것이 절대 아니다. 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화 하는 것이다. 트랜잭션이라는 작업 단위를 기준으로, 커밋 직전에만 동기화를 하면 된다. 플러시가 발생한다는 것은 무엇일까? 변경을 감지하는 것이다. 수정된 엔티티 쓰기 지연 SQL 저장소에 등록하는 것이다. 쓰기 지연 SQL 저장소의 쿼리문(등록, 수정, 삭제)을 데이터베이스에 전송하는 것이다. 02. 영속성 컨텍스트를 플러시하는 방법 플러시하는 방법 em.flush()를 직접 호출한다. (수동) 트랜잭션 커밋 시 플러시가 자동 호출된다. JPQL 쿼리를 실행하면 플러시가 ..
01. 영속성 컨텍스트의 개념 JPA에서 가장 중요한 것은 객체와 관계형 데이터베이스의 매핑하기, 그리고 영속성 컨텍스트라고 할 수 있다. EntityManagerFactory와 EntityManager의 동작 사용자로부터 요청이 들어오면 웹 어플리케이션에서, EntityManagerFactory가 EntityManager를 생성하고, EntityManager는 커넥션 풀에 있는 Connection 객체를 사용하여 DB에 접근한다. 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어 중 하나로,엔티티를 영구 저장하는 환경이라는 뜻이다. 논리적인 개념으로 눈에 보이지 않는다. EntityManager.persist(entity); 처럼, EntityMananger를 통해 영속성 컨텍스트에 접근이 가능..
01. JPA 구동 방식 Persistence로 META-INF/persistence.xml를 읽어 설정 정보를 조회한다. EntityManagerFactory 라는 클래스를 생성한다. 필요할 때 마다 EntityManager 를 생성한다. 02. 객체와 테이블을 생성하고 매핑하기 Annotation @Entity 는 JPA가 관리할 객체임을 명시한다. @Id 는 데이터베이스의 Primary Key와 매핑할 때 사용한다. Member 클래스 작성하기 @Entity @Getter @Setter public class Member { @Id private Long id; private String name; } @Getter와 @Setter를 사용하면 다음과 같이 길게 작성해야 하는 코드를 자동으로 만들어준..
01. H2 데이터베이스 설치 & 실행 H2 소개 최고의 실습용 DB로, 가볍고, 웹용 쿼리툴을 제공한다. MySQL, Oracle 데이터베이스 시뮬레이션, 시퀀스, AUTO INCREMENT 등의 기능을 제공한다. H2 설치 - https://www.h2database.com/html/main.html 에서 [Download] 탭 - [Archive Downloads] 에서 원하는 버전으로 다운 받으면 된다. (나는 2.1.214 버전을 다운 받았다.) 02. Maven Maven 소개 https://maven.apache.org/ (공식 홈페이지) 소프트웨어 프로젝트 관리 및 이해 도구로, 프로젝트 개체 모델(POM)의 개념을 기반으로 Maven은 중앙 정보에서 프로젝트의 빌드, 보고 및 문서를 관리..