-
[JPA] 엔티티 매핑JPA 2020. 4. 6. 15:31
@Entity
: 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다.
- 기본 생성자 필수
- final 클래스, enum, interface, inner 클래스 사용 할 수 없다.
- 저장할 필드에 final을 사용하면 안되다.
@Table
: 엔티티와 매핑할 테이블을 지정. (생략하면 매핑한 엔티티 이름을 테이블 이름으로 사용)
옵션
- name : 매핑할 테이블 이름
- catalog : catalog 매핑
- schema : 데이터베이스에서 schema를 매핑
- uniqueconstraints : DDL 생성 시에 유니크 제약조건을 만든다.
필드와 컬럼 매핑
@ Column : 컬럼을 매핑한다.
- nullable(DDL) : null 값의 허용 여부를 설정. false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다.
- unique(DDL) : 유니크 제약조건을 걸 때 사용 한다.
- colum Definition(DDL) : 데이터베이스 컬럼 정보를 직접 줄 수 있다.
- length : 문자 길이 제약조건
- precision, scale(DDL) : BigDecimal 타입에서 사용한다. precision은 소수점을 포함한 전체 자릿수를, sclae은 소수의 자릿수
@Enumerated : 자바의 enum 타입을 매핑한다.
- EnumType.ORDINAL : enum 순서를 데이터베이스에 저장
enum RoleType { ADMIN, USER } ... @enumerated(EnumType.ORDINAL) private RoleType roletype; member.setRolType(RoleType.ADMIN); // -> DB에 숫자 0으로 저장 된다.
- EnumType.STRING : enum 이름을 데이터베이스에 저장
enum RoleType { ADMIN, USER } ... @enumerated(EnumType.STRING) private RoleType roletype; member.setRolType(RoleType.ADMIN); // -> DB에 문자 ADMIN으로 저장 된다.
@Temporal : 날짜 타입을 매핑한다.
- TemporalType.DATE : 날짜. (예 2013-10-11)
- TemporalType.TIMe : 시간. (예 11:11:11)
- TemporalType.TimeStamp : 날짜와 시간 (예 2013-10-11 11:11:11)
-> 자바의 Date 타입에는 년월일 시분초가 있지만 데이버테이스에는 date(날짜), time(시간), timestamp(날짜와 시간)라는 세 가지 타입이 별도로 존재
@Temporal(TemporalType.DATE) private Date date; // 날짜 @Temporal(TemporalType.TIMe) private Date time; // 시간 @Temporal(TemporalType.TIMESTAMP) private Date timestamp; // 날짜와 시간
@Lob : BLOB, CLOB 타입을 매핑한다.
@Transient : 특정 필드를 데이터베이스에 매핑하지 않는다.
@Access : JPA가 엔티티 데이터에 접근하는 방식을 지정한다.
'JPA' 카테고리의 다른 글
[JPA] 영속성 컨텍스트 (0) 2020.06.28 [JPA] 엔티니 매니저 (0) 2020.06.28 [JPA] 프로그래밍 : 엔티티 상태 (0) 2020.04.03 [JPA] 프로그래밍 : 1대다 맵핑 (0) 2020.04.03 [JPA] 프로그래밍 : 엔티티 (0) 2020.04.02 댓글