JPA에서 가장 중요한 2가지영속성 컨텍스트엔티티의 생명주기객체와 관계형 데이터베이스 맵핑하기영속성 컨텍스트 (JPA가 내부적으로 어떻게 동작하는지)엔티티를 영구 저장하는 환경EntityManger.persist(entity); 를 활용하여, 엔티티를 영속성 컨텍스트
영속성 컨텍스트(애플리케이션과 DB사이에 무언가가 있는 것)의 5가지 이점1차 캐쉬동일성(identity)보장트랜잭션을 지원하는 쓰기 지연(transactional write-behind)변경 감지(Dirty Checking)지연 로딩(Lazy Loading)조회를 할
플러시준영속 상태영속성 컨텍스트의 변경내용을 DB에 반영플러시 발생 1\. 변경 감지 2\. 수정된 엔티티를 '쓰기 지연 SQL 저장소'에 등록 3\. '쓰기 지연 SQL 저장소'의 쿼리를 DB에 전송영속성 컨텍스트를 플러시하는 방법 1\. em.flush()
객체와 테이블 맵핑데이터베이스 스키마 자동생성@Entity@Entity가 붙은 클래스는 JPA가 관리JPA를 사용해서 테이블과 맵핑할 클래스는 @Entity가 필수속성 : name \- JPA에서 사용할 엔티티 이름을 지정 \- 기본값 = 클래스 이름 \- 가급적
맵핑 어노테이션 정리기본 키 맵핑IDENTITY, SEQUENCE, TABLE 전략컬럼 맵핑속성(1) name : 필드와 맵핑할 테이블의 컬럼 이름(2) insertable, updatable : 등록, 변경 가능 여부(3) lenght : 문자 길이 제약 조건(Str
연관관계 맵핑시 고려사항 3가지다대일N:1일대다1:N일대일1:1다대다N:M@ManyToOne, @OneToMany, @OneToOne, @ManyToMany테이블외래 키 하나로 양쪽 조인 가능사실 방향이라는 개념이 없음객체참조용 필드가 있는 쪽으로만 참조 가능한쪽만 참
상속관계 맵핑@MappedSuperclass관계형 데이터베이스는 상속관계X슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사상속관계 맵핑 = 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법(객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 맵핑
프록시즉시 로딩과 지연 로딩지연 로딩 활용영속성 전이 : CASCADE고아 객체영속성 전이 + 고아 객체, 생명주기데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회DB에 쿼리가 안 나가는데, 객체가 조회되는 것진짜를 넘겨주는게 아니라, 가짜(프록시)엔티티 객체
기본값 타입2\. 임베디드 타입(복합 값 타입)값 타입과 불변 객체값 타입의 비교5\. 값 타입 컬렉션(1) 엔티티 타입@Entity로 정의하는 객체데이터가 변해도 식별자로 지속해서 추적 가능(2) 값 타입 int, Integer, String처럼 단순히 값으로 사용하
객체지향 쿼리 언어 소개JPQL기본 문법과 기능페치 조인JPQl, JPA Criteria, QueryDSL, 네이티브 SQL, JDBC API 직접 사용, MyBati, SpringJdbcTemplate 함께 사용$\\to$ 복잡한 쿼리를 짤 수 있어야 한다는 것에서
경로 표현식다형성 쿼리엔티티 직접 사용Named 쿼리벌크 연산상태 필드(state field) : 단순히 값을 저장하기 위한 필드연관 필드(association field) : 연관관계를 위한 필드상태 필드 : 경로 탐색의 끝. 탐색X단일 값 연관 경로 : 묵시적 내부