JPA에서 엔티티와 테이블을 매핑하는 것은 별거 없습니다.
그런데 필드와 컬럼은 다양합니다.
Member 클래스를 수정해봅시다.
package hellojpa;
import javax.persistence.*;
import java.util.Date;
@Entity
public class Member {
@Id
private Long id;
//...1
@Column(name = "name")
private String username;
//...2
private Integer age;
//...3
@Enumerated(EnumType.STRING)
private RoleType roleType;
//...4
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate; //생성일짜
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate; //수정일짜
//...5
@Lob
private String description;
public Member() {
}
}
그리고 RoleType을 enum으로 만들어줍시다.
package hellojpa;
public enum RoleType {
USER, ADMIN
}
객체는 username으로 쓰고 싶은데 DB에는 name으로 쓰고 싶을 때
Integer로 만들면 DB에서 Integer와 가장 알맞는 타입이 설정됩니다.
객체에서 enum 타입을 쓰고 싶을 때
날짜 타입을 쓰고 싶을 때
@Temporal 애노테이션을 쓰면 됩니다.
@Temporal에는 타입이 세가지가 있습니다.
자바의 DATE 타입 안에는 날짜와 시간이 다 있습니다. 그런데 보통 데이터베이스들은 날짜, 시간, 날짜와 시간을 분리해서 사용합니다.
그래서 매핑 정보를 줘야합니다.
@Temporal(TemporalType.TIMESTAMP)로 쓴 이유입니다.