본문 바로가기

Spring/JPA25

복수의 유일키 제약조건 지정하는 방법 문법 @Table( name="테이블 이름", uniqueConstraints={ @UniqueConstraint( name = "unique 제약조건 이름", columnNames = { "포함할 컬럼이름 1", "포함할 컬럼이름 2" } ), } public class Entity{ } 예제 @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Builder @Table(name="fcm_device_token", uniqueConstraints= { @UniqueConstraint( name = "fcm_device_token_device_token_uindex", columnNames = { "user_id", "devic.. 2023. 5. 26.
@MappedSuperclass JPA에서 여러 엔티티를 작성하다가 상속관계와는 별개로 중복되는 속성들을 공통 클래스로 빼내고 싶을 때가 있다 이를 위해, JPA에서는 @MappedSuperClass 어노테이션을 제공한다 사용방법 1. 공통 클래스 작성 (공통 클래스에는 @Entity 어노테이션을 붙이지 않는다) 주의점 BaseEntity는 DB에 테이블이 생성되지 않음 BaseEntity로 DB에 조회 불가능 2. 공통 클래스에 @MappedSuperclass 어노테이션을 붙여준다 2. 공통 클래스를 상속한 엔티티 작성 2023. 3. 24.
상속관계 매핑 자바 클래스에서는 부모클래스를 상속하여 자식클래스를 생성할 수 있다 하지만, DB에서는 상속관계 개념이 없다 대신, 논리적 모델의 슈퍼 타입과 서브타입이라는 개념이 존재한다 슈퍼 타입: 공통적인 컬럼을 가진 타입 서브 타입: 슈퍼타입에 컬럼을 추가하여 생성한 타입 예를 들어, PERSON(사람)이라는 테이블과 STUDENT(학생)와 SALARYMAN(직장인)이라는 테이블의 관계는 아래 사진과 같이 표현 가능하다 위 사진에서 PERSON이 슈퍼타입, STUDENT와 SALARYMAN을 서브타입으로 볼 수 있다 JPA에서는 슈퍼 타입과 서브타입을 매핑할 수 있는 여러 전략들을 제공한다 JPA에서 제공하는 전략은 아래와 같다 조인전략 조인전략 사용 시 테이블 구조는 아래와 같다 특징 부모-자식 테이블이 분리된.. 2023. 3. 24.
연관관계 - @ManyToMany JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다 이 페이지에서는 N:M 관계를 매핑하는 @ManyToMany 어노테이션에 대해 알아보겠다 Entity Entity 상에서 아래와 같이 N:M 관계를 표현할 수 있다 DB 실제 테이블 에서는 N:M 관계를 표현할 수 없다 N:M관계를 표현하기 위해 중간에 연결 테이블을 두어 1:N과 N:1관계로 풀어서 표현한다 아래 그림에서 N:M관계인 Order와 Item의 관계를 연결 테이블인 OrderItem 테이블을 두어 1:N, N:1 관계로 풀어서 표현하는 것을 볼 수 있다 양방향 연관관계 적용 1. N:M 관계에서 M의 관계인 Item에 Orders 참조변수 추가 2. ManyToMany 관계 설정 및 mappedBy 속성 추가 @Man.. 2023. 3. 23.