엔티티 맵핑(2) - slahsk/study GitHub Wiki
엔티티 맵핑(2)
@Column
필드 테이블 컬럼에 맵핑
생략하면 필드 이름으로 맵핑된다.
int data1; // not null
Integer data2;
기본타입, 래퍼 클레스 는 DDL자동생성시에 차이가 있다. not null, nll 차이
@Enumerated
자바의 enum 타입을 맵핑할 때 사용
enum RoleType{
ADMIN, USER
}
@Enumerated(EnumType.STRING) //문자로 저장 ADMIN, USER
private RoleType roleType;
@Enumerated(EnumType.ORDINAL)//순서대로 저장 0, 1
//주의할점은 수정하여 enum 중간에
//하나 추가 되는경요 ADMIN, NEW ,USER USER 는 2개 된다.
private RoleType roleType;
@Temporal
날자 타입(java.util.Date, java.util.Calender) 맵핑할 떄 사용
@Temporal(TemporalTyle.DATE)
private Date date;//날짜
@Temporal(TemporalTyle.TIME)
private Date time;//시간
@Temporal(TemporalTyle.TIMESTAMP)
private Date timestamp;//날짜 시간
생략을 하면 timestamp로 정의 된다.
@Lob
필드 타입이 문자면 CLOB 매핑하고 나머지는 BLOB로 맵핑한다.
@Transient
이 필드는 맵핑하지 않는다.
@Access
JPA 가 엔티티 데이터에 접근하는 방식을 지정한다.
@Entiy
@Access(AccessType.FIELD)
public class Member{
@Id
private String id;
private String data1;
private String data2;
}
@Access 설정하지 않으면 @id 기준으로 접근 방식이 설정된다.
@Entiy
@Access(AccessType.PROPERTY) //생략 가능 @id 기준으로 하기때문
public class Member{
private String id;
private String data1;
private String data2;
@Id
public String getId(){
return id;
}
@Column
public String getData1(){
return data1;
}
}
@Entiy
public class Member{
@Id
private String id;
@Transient
private String firstName;
@Transient
private String lastName;
@Access(AccessType.PROPERTY)
public String getFullName(){
return firstName + lastName
}
}
둘다 사용 가능하다.
DB 저장시 FULLNAME 컬럼에 firstName + lastName의 값이 저장된다.