MySQL의 Member 테이블과 연결되는 Member 객체 생성
@Entity //JPA를 사용한다고 알려주는 애노테이션
@Table(name = "member") // 클래스 이름이랑 테이블 이름이 같으면 생략 가능
public class Member {
@Id // PK(Primary Key) 인것을 알려줌
@Column(name = "id") // 변수 이름이랑 column name 이랑 같으면 생략 가능
private Long id;
@Column(name = "name", nullable = false, updatable = true, length = 10) //updatable=true가 DEFAULT; false로 하면 JPA에서 해당 column의 값 수정 X
private String username;
private Integer age;
@Enumerated(EnumType.STRING) //무조건 EnumType.STRING을 쓰도록 주의
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
public Member() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public RoleType getRoleType() {
return roleType;
}
public void setRoleType(RoleType roleType) {
this.roleType = roleType;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public Date getLastModifiedDate() {
return lastModifiedDate;
}
public void setLastModifiedDate(Date lastModifiedDate) {
this.lastModifiedDate = lastModifiedDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
- @Entity가 붙은 클래스는 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수
- 객체의 이름이 MySQL에서의 테이블과 이름이 다르면 @Table 애노테이션으로 연결해줄 수 있음
- 테이블에서의 Column들과 이름이 매칭되도록 객체에서의 변수 이름 설정. 이름이 다르면 @Column 애노테이션으로 연결 시켜줄 수 있음
- @Column: name, updatable, nullable, length, unique 등 설정 가능. Updateable을 false로 하면 JPA에서 해당 column을 수정하지 못함
- @Id 애노테이션으로 PK 인것을 알려줄 수 있음
- @Enumerated:자바 enum 타입을 매핑할 때 사용. EnumType.ORDINAL 사용X => DB에 Enum 값을 저장하는게 아니라 Enum의 순서를 저장하기 때문에 값을 조회하기도 어렵고, Enum 값이 수정, 추가, 제거 되면 어떤 Enum 값을 지칭하는지 알 수 없음. 무조건 EnumType.STRING을 사용 하도록. EnumType.STRING을 사용하면 Enum 값 그대로 DB에 저장
- @Transient: 필드 매핑X, 터베이스에 저장X, 조회X => 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용