반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- ssafy
- 프로그래머스
- jpa
- 코드트리
- 싸피10기
- 리액트
- 자료구조
- 싸피
- 싸피셜
- 개발자
- 자바스크립트
- 싸피 10기
- 백준
- 코딩테스트 자바
- 싸피11기
- 프론트엔드
- 자바스크립트 자료구조
- 싸피 대전캠퍼스
- 싸피 11기
- 인프런
- 비동기
- 알고리즘
- 자바 알고리즘
- 싸피 12기
- 싸피 기자단
- 알고리즘 자바
- 자바 코딩테스트
- 코딩테스트
- swea
- SSAFYcial
Archives
- Today
- Total
병아리의 코딩 일기
[JPA] 엔티티 매핑 (3) 요구사항에 대한 필드와 컬럼 매핑 본문
이번엔 요구사항의 예시를 들어 필드와 컬럼을 실제로 매핑해보자!
요구사항 추가
- 회원은 일반 회원과 관리자로 구분해야 한다.
- 회원 가입일과 수정일이 있어야 한다.
- 회원을 설명할 수 있는 필드가 있어야 한다. 이 필드는 길이 제한이 없다.
요구사항을 반영한 Entity 클래스 생성
package hellojpa;
import javax.persistence.*;
import java.util.Date;
@Entity //꼭 넣기 그래야 jpa가 인식!
public class Member {
@Id
private Long id;
@Column(name = "name") //객체에는 username 이라고 쓰고 DB에는 name 이라고 쓰고 싶을 떄!
private String username;
private Integer age;
@Enumerated(EnumType.STRING) //db에는 enum 타입이 없어서 @Enumerated 어노테이션을 쓰면 된다.
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP) //Date = 날짜타입, @Temporal 에는 date, time, timestamp 세 가지 타입이 있다. db는 보통 세가지 구분해서 씀
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob //varchar을 넘어서는 큰 컨텐츠를 넣고 싶을 때 Lob을 씀
private String description;
public Member(){
}
}
매핑 어노테이션 정리
@Column : 컬럼 매핑
@Temporal : 날짜 타입 매핑 -> Java 8부터는 LocalDate, LocalDateTime 이 들어와서 이걸로 쓰자! 어노테이션도 굳이 안붙여도 됨.
@Enumerated : enum 타입 매핑
@Lob : BLOB, CLOB 매핑 -> 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑
@Transient : 특정 필드를 컬럼에 매핑하고 싶지 않을 때
@Transient
private int temp;
@Transient는 DB와 관계없이 메모리에서만 쓰고 싶을 때 사용한다.
@Column 속성
- insertable, updatable : 등록, 변경 가능 여부 (기본값 : TRUE)
- nullable : false로 설정하면 not null 제약 조건이 붙는다.
- unique : 잘 안씀. 이름이 못알아보게 나오기 때문이다.
- length: length = 10 으로 하면 varchar(10)으로 설정된다.
- columnDefinition : 컬럼 정보를 직접 줄 수 있다. ex) varchar(100) default 'EMPTY'
- precision, scale(DDL) : BigDecimal 타입에서 사용한다. 아주 큰 숫자나 소숫점 쓸 때 사용한다.
enum 을 매핑할 때 주의 사항
EnumType.ORDINAL, EnumType.STRING 두 가지가 있다. 이중 ORDINAL이 기본 값인데, ORDINAL 사용 X
해결할 수 없는 오류로 이어지기에 굉장히 위험함!
ORDINAL : Enum 의 순서를 DB에 저장 - Integer 타입으로 들어간다. ex) 0, 1 ...
STRING : Enum 의 이름을 그대로 DB에 저장
728x90
반응형
LIST