이번 포스팅에서는 필드와 컬럼 매핑에 대해서 알아보겠습니다.
Member 엔티티를 만들어 보겠습니다.
package hellojpa;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Member {
@Id
private Long id;
@Column(name = "name")
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
public Member(){
}
}
Membe 엔티티에 맞게 table이 생성된 것을 볼 수 있습니다.
- age는 integer로 생성되었습니다.
- enum 타입을 string으로 했기 때문에 varchar로 생성된 것을 볼 수 있습니다.
이번에는 Meber에 붙어 있는 어노테이션에 대해서 알아보겠습니다.
어노테이션 | 설명 |
@Column | 컬럼 매핑 |
@Temporal | 날짜 타입 매핑 (현재는 쓸모 x) |
@Enumerated | enum 타입 매핑 |
@Lob | BLOB, CLOB 매핑 |
@Transient | 특정 필드를 컬럼에 매핑하지 않음(매핑 무시) |
@Column 상세 설명
속성 | 설명 | 기본값 |
name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
insertable, updatable | 등록, 변경 가능 여부 | TRUE |
nullable | null 값의 허용 여부를 설정합니다 | |
unique | @Table의 UniqueConstraints와 같습니다. 간단하게 유니크 제약조건을 걸 때 사용합니다. | |
columnDefinition | 데이터베이스 컬럼 정보를 직접 줄수 있습니다. | |
length | 문자 길이 제약조건입니다. String 타입에만 존재합니다. |
다양한 column의 속성을 부여해본 결과입니다.
필드값 username에 다양한 속성을 부여했습니다.
- name으로 이름을 줬습니다.
- nullable값을 false로 줘서 table을 생성할 때 not null이 만들어졌습니다.
- length를 10으로 주어 varChar(10)으로 테이블을 만들었습니다.
- unique를 true로 만들어 제약조건을 걸었습니다.
* 여기서 주의해야할 점이 있습니다.
- 임의의 문자열로 표현되기 때문에 unique속성을 사용하기 보다는 table에서 UniqueConstraints를 사용하는 것이 더 효과적입니다.
@Enumerated
- 자바 enum타입을 매핑할 때 사용합니다.
- Enumtype.ORDINAL : enum 순서를 데이터베이스에 저장합니다.
- Enumtype.STRING : enum이름을 데이터베이스 저장합니다.
기본값 : Enumtype.ORDINAL 입니다.
예시를 먼저 보여드리겠습니다.
RoleType을 user를 넣었을 때입니다.
데이터베이스에 roleType의 순서가 저장되는 것을 볼 수 있습니다.
그렇다면 CLIENT라는 속성을 만들어서 넣어보겠습니다.
CLIENT 속성을 만들어 넣고
새로운 member를 만들고 CLIENT 속성을 넣었습니다.
결과는 놀랍게도 ROLETYPE가 모두 0인 것을 볼 수 있습니다.
즉, 타입을 새롭게 추가했을 때 예상하지 못한 에러가 발생할 수 있습니다.
이번에는 Enumtype.STRING 를 사용해보겠습니다.
ROLETYPE으로 CLIENT가 생긴것을 볼 수 있습니다.
@Temporal
- 날짜 타입을 매핑할 때 사용합니다.
- 자바 8부터는 localDate, LocalDateTime을 사용할 수 있기 때문에 따로 어노테이션을 사용하지 않아도 됩니다.
특별한 어노테이션 없이 table이 잘 생성된 것을 볼 수 있습니다.
출처
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 본 강의는 자바 백엔
www.inflearn.com
'JPA' 카테고리의 다른 글
트랜잭션 예외처리 롤백 (0) | 2024.04.01 |
---|---|
Cascade, OrphanRemoval 사용 주의 (0) | 2022.02.05 |
JPA 엔티티 매핑 - 데이터베이스 스키마 자동 생성 (0) | 2021.11.16 |
JPA 엔티티 매핑 - 소개 및 객체와 테이블 매핑 (0) | 2021.11.15 |
jpa - 플러시, 준영속 상태 (0) | 2021.10.16 |
댓글