본문 바로가기

JPA

(12)
상속관계 매핑 상속관계 매핑 1. 조인 전략 -> 각각 테이블로 변환 2. 통합 테이블로 변환 -> 단일 테이블 전략 3. 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 주요 어노테이션 - @Inheritance(strategy=InhertanceType.XXX) - JOINED: 조인 전략 - SINGLE_TABLE: 단일 테이블 전략 - TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 - @DiscriminatorColumn(name = "DTYPE") - @DiscriminatorValuue("XXX") 예시로 아래의 그림같이 Item에 Album과 Movie, Book이 상속된다고 가정하자 1. 조인 전략 - 테이블을 정규화하며 저장공간을 효율화 하지만 조회 시 조인을 많이 사용하여 성능을..
연관관계 매핑 회원과 팀이 다대일 관계에 있다고 가정 객체를 테이블에 맞추어 모델링(식별자로 다시 조회, 객체 지향적인 방법 X) - 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. - 객체는 참조를 사용해서 연관된 객체를 찾는다. 단방향 연관관계 양방향 연관관계와 연관관계의 주인 양방향으로 연관관계를 설정하면 반대 방향으로 객체를 탐색해도 가능하다. 연관관계의 주인과 mappedBy 양방향 매핑 규칙 - 객체의 두 관계 중 하나를 연관관계의 주인으로 지정 - 연관관계의 주인만이 외래 키를 관리(등록, 수정) - 주인이 아닌 쪽은 읽기만 가능 - 주인은 mappedBy 속성 사용 x - 주인이 아니면 mappedBy 속성으로 주인 지정 - 외래 키가 있는 곳을 주인으로 지정 연관관계 주인이 아닌 곳에서 처..
엔티티 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래슨는 @Entity 필수( 기본 생성자 필수 ) 데이터베이스 스키마 자동 생성 create 기존테이블 삭제 후 다시 생성(DROP + CREATE) create-drop create와 같으나 종료시점에 테이블 drop update 변경분만 반영 validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음(주석처리) 결과>> 기존 테이블을 drop하고 다시 create한다. 매핑 어노테이션 정리 @Column 컬럼 매핑 @Temporal 날짜 타입 매핑 : LocalDate, LocalDateTime 사용 시 생략 가능 @Enumerated enum 타입 매핑 : ORDINAL, STRING이 있는데 ORDINAL은 사용 X @Lob..
영속성 관리 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어로 "엔티티를 영구 저장하는 환경" EntityManager.persist(entity) 엔티티의 생명주기 비영속 - 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setNo(1L); member.setName("동물"); 영속 - 영속성 컨텍스트에 관리되는 상태( persist를 한 상태) EntityManager em = emf.createEntityManager(); try{ //객체를 생성한 상태(비영속) Member member = new Member(); member.setNo(1L); member.setName("동물"); // 객체를 저장한..