회원관리 프로그램에 요구사항을 추가해보자.
- 회원은 일반 회원과 관리자로 구분해야함
- 회원가입일과 수정일이 있어야함
- 회원을 설명할 수 있는 필드가 있어야함. 길이제한 없음
- 회원이름은 필수로 입력, 10자를 초과하면 안된다
package jpabook.start;
import javax.persistence.*;
import java.util.Date;
@Entity
@Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(
name = "NAME_AGE_UNIQUE",
columnNames = {"NAME", "AGE"} )})
public class Member {
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME", nullable = false, length = 10)
private String username;
private Integer age;
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@Lob
private String description;
@Transient
private String temp;
}
RoleType.java
package jpabook.start;
public enum RoleType {
ADMIN, USER
}
★코드 분석★
1) @Enumerated(EnumType.STRING)
private RoleType roleType;
-> 자바의 enum을 사용해서 회원의 타입을 구분. enum을 사용하려면 @Enumerated 어노테이션으로 매핑해야함.
2) @Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
->자바의 날짜 타입은 @Temporal을 사용해서 매핑한다.
3) @Lob
private String description;
-> 이 필드는 길이제한이 없이 만들어 져야 함. varchar 타입 대신 CLOB 타입으로 저장해야한다.
@Lob 을 사용하면 CLOB, BLOB 타입을 매핑할 수 있다.
4) @Column(name = "NAME", nullable = false, length = 10)
private String username;
-> nullable = false 의 의미는 자동생성되는 DDL 에 not null 제약조건을 추가할 수 있다.
length 속성은 자동생성되는 DDL에 문자읰 크기를 지정할 수 있다.
5) @Table(name="MEMBER", uniqueConstraints = {@UniqueConstraint(
name = "NAME_AGE_UNIQUE",
columnNames = {"NAME", "AGE"} )})
-> 유니크 제약조건..
4),5)번은 DDL이 자동생성될때만 영향을 준다.
'JPA' 카테고리의 다른 글
JPA시작(6)_기본키 매핑 (직접할당, 자동생성) (0) | 2021.06.07 |
---|---|
JPA시작(5)_데이터베이스 스키마 자동생성 (0) | 2021.06.07 |
JPA시작(3)_애플리케이션개발_기초편 (0) | 2021.06.07 |
JPA시작(2)_객체 매핑방법_@Entity, @Table, @Id, @Column, persistence.xml 설정 (0) | 2021.06.07 |
JPA시작(1)_H2데이터베이스 설치 / maven 설정 (0) | 2021.06.07 |