@Entity
- 테이블과 매핑
- @Entity가 붙은 클래스는 JPA가 관리하는 것으로, 엔티티라고 불림
속성
Name : JPA에서 사용할 엔티티 이름을 지정, 보통 기본값인 클래스 이름을 사용
주의사항
- 기본 생성자는 필수(JPA가 엔티티 객체 생성 시 기본 생성자를 사용)
- final 클래스, enum, interface, inner class에는 사용할 수 없음
- 저장할 필드에 final 사용불가
@Table
- 엔티티와 매핑할 테이블 지정
- 생략 시 매핑한 엔티티 이름을 테이블 이름으로 사용
속성
Name : 매핑할 테이블 이름 (default. 엔티티 이름 사용)
Catalog : catalog 기능이 있는 DB에서 catalog를 매핑 (default. DB명)
Schema : schema기능이 있는 DB에서 schema를 매핑
uniqueConstraints : DDL 생성시 유니크 제약조건을 만듬, 스키마 자동 생성 기능을 사용해서 DDL을 만들때만 사용
@Id
- 해당 엔티티를 기본키로 할당
@GeneratedValue
IDENTITY : 기본키 생성을 데이터베이스에 위임( = AUTO_INCREMENT)
SEQUENCE : 데이터베이스 시퀀스를 사용해서 기본 키를 할당
데이터베이스 시퀀스에서 식별자 값을 획득한 후 영속성 컨텍스트에 저장
유일한 값을 순서대로 생성
TABLE : 키 생성 테이블을 사용, 데이터베이스 시퀀스유사
AUTO : 선택한 데이터베이스에 따라 기본키를 자동으로 선택
@column
- 객체 필드를 테이블 컬럼에 매핑
- name, nullable이 주로 사용
속성
name : 필드와 매핑할 테이블 컬럼 이름(default. 객체의 필드 이름)
nullable : null값의 허용 여부 설정, false 설정 시 not null (default. true)
unique : @Table의 uniqueConstraints 와 같지만 한 컬럼에 간단히 유니크 제약조건을 적용
columnDefinition : 데이터베이스 컬럼 정보를 직접 줄 수 있음
length : 문자 길이 제약조건, String타입에만 사용
precision, scale : BigDecimal, BigInteger타입에서 사용, 아주 큰 숫자나 정밀한 소수를 다룰 떄만 사용
@Enumerated
- 자바의 enum타입을 매핑할 때 사용
속성
value : EnumType.ORDINAL : enum 순서를 데이터베이스에 저장(숫자로 저장)
EnumType.STRING : enum 이름을 데이터베이스에 저장(문자열 자체 저장)
'프로그래밍 > spring' 카테고리의 다른 글
[JPA] 연관관계 매핑 종류 - 1 (0) | 2023.07.21 |
---|---|
[JPA] Spring DATA JPA Querydsl - 3 (0) | 2023.07.19 |
[JPA] Spring DATA JPA Querydsl - 2 (0) | 2023.07.18 |
[JPA] Spring DATA JPA Querydsl - 1 (0) | 2023.07.17 |
[JPA] Spring DATA JPA @Query어노테이션 (0) | 2023.07.14 |