
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.projectlombok:lombok')
compile('org.springframework.boot:spring-boot-stater-data-jpa')
compile('com.h2database:h2')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
@Entity
public class BoardTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idx;
@Column(nullable = true)
private String title;
// length가 없으면 기본 varchar(255)
@Column(length = 500, nullable = true)
private String comment;
}
테이블의 컬럼을 나타내며 굳이 선언하지 않더라고 해당 클래스의 필드는 모두 컬럼이 된다.
사용하는 이유는 기본값 외에 추가로 변경이 필요한 옵션이 있으면 사용한다.
JPA에서 아무것도 적지 않으면 String의 길이는 Default로 varchar(255)이다.
private String title;
or
@Column
private String title;
타입의 길이는 length로 정해줄 수 있다.
@Column(length = 100)
private String title;
@Column(length = 5)
private Integer count;
@Column
private Long idx;
// Long은 DB에 bigint(20)으로 저장된다.
@Column의 속성으로 columnDefiniton을 사용하면 Default값이나 Comment등을 사용할 수 있다.
columnDefiniton를 사용하면 length는 기본으로 적용되므로 columnDefinition 안에서 적용해주어야 한다.
- columnDefinition = "varchar(100)" 이렇게 사용하여야 적용됨
- columnDefinition = "varchar", length = 100 이렇게 하면 기본값인 255가 적용됨
@Entity
public class BoardTable {
@Column(length = 100, nullable = true)
private String title;
// String 타입으로 length를 100으로 지정해주면 varchar(100)이 됨
// nullable = true이면 null, false이면 not null
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP)
private Date regDt;
// 케멀케이스로 네이밍하면 regDt = reg_dt (table)로 매칭된다.
// TIMESTAMP는 columnDefinition으로 TIMESTAMP를 작성해주고 @Temporal(TemporalType.TIMESTAMP) 추가해준다.
@Column(columnDefinition = "TINYINT(4)", nullable = true)
private Integer value;
@Column(columnDefinition = "VARCHAR(1) DEFAULT 'N' COMMENT '삭제여부'", nullable = false)
private String delFlag;
// columnDefinition으로 default나 comment 추가 가능
Column(nullable = true)
private Integer accountIdx;
// int(11)은 이렇게만 사용해도 가능
}