스프링 부트
Spring framework는 지원이 잘 안되어, Spring Boot에 대해서 알아보았습니다.
게시판을 구현하기 위해 다양한 방식을 지원하지만, JPA를 활용해보겠습니다.
JPA는 객체, 즉 테이블을 구성하기 위해 Entity(엔터티, 엔티티)를 사용합니다. Board라는 엔티티(클래스)를 생성합니다.
코드를 살펴보겠습니다.
@Entity
@Table(name="T_BOARD")
@SequenceGenerator(
name="BoardSeqGenerator",
sequenceName = "T_BOARD_SEQ",
initialValue = 1,
allocationSize = 1
)
...
1) @Entity 어노테이션을 통해 엔티티 클래스로 지정할 수 있습니다.
2) @Table은 테이블 이름을 지정할 수 있으며, 그 이름은 name 이하에 언급해서 지정합니다.
3) @SequenceGenerator: 시퀀스를 생성해주며 MySQL 시퀀스라는 문법은 없어서 시퀀스 테이블을 생성해줍니다. 여기서 name이 시퀀스 제너레이터의 이름이며, sequenceName은 시퀀스 이름을 지정합니다. initalValue가 시퀀스의 시작값을 설정합니다.
package com.bit.springboard.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Entity
@Table(name="T_BOARD")
@SequenceGenerator(
name="BoardSeqGenerator",
sequenceName = "T_BOARD_SEQ",
initialValue = 1,
allocationSize = 1
)
다음은 컬럼을 정의해보겠습니다.
1) 컬럼에 @Id를 주면 PK(Primary Key)로 지정합니다.
2) 키 값을 지정하는 방식은 @GeneratedValue를 사용합니다.
3) GenerationType 속성에는 AUTO, IDENTITY, SEQUENCE, TABLE 등이 있습니다. 사용할 때, GenerationType.SEQUENCE 이렇게 GenerationType에 이어붙여서 활용합니다.
AUTO | 기본값, 데이터베이스가 자동으로 키 값을 할당합니다. |
IDENTITY | AUTO_INCREMENT를 사용해서 키 값을 할당합니다. |
SEQUENCE | 시퀀스로 할당하고 항상 SequenceGenerator와 함께 사용합니다. |
TABLE | 키 값으로 사용될 값들을 별도의 테이블로 생성해서 관리합니다. |
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Board {
@Id
@GeneratedValue (
strategy = GenerationType.SEQUENCE,
generator = "BoardSeqGenerator"
)
private int boardNo;
...
}
다음은 컬럼에 대한 어노테이션입니다. @Column은 컬럼에 대한 특성을 지정합니다. name은 매핑할 컬럼을 지정하고, nullable은 null값 허용 여부를 설정합니다. nullable = false라면, NOT NULL로 결측치를 허용하지 못합니다. unique는 UK(Unique Key)로 설정할 수 있습니다.
@Column | 컬럼 특성 지정 |
name | 매핑할 컬럼 지정 |
nullable | null값 허용 여부 설정(false = NOT NULL) |
unique | UK 설정 |
추가로, @Transient는 테이블의 컬럼으로 생성하지 않고 객체 내에서만 사용 가능한 멤버변수를 만듭니다.
public class Board {
...
@Transient
private String searchCondition;
@Transient
private String searchKeyword;
}
전체적인 코드는 다음과 같습니다.
package com.bit.springboard.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Entity
@Table(name="T_BOARD")
@SequenceGenerator(
name="BoardSeqGenerator",
sequenceName = "T_BOARD_SEQ",
initialValue = 1,
allocationSize = 1
)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Board {
@Id
@GeneratedValue (
strategy = GenerationType.SEQUENCE,
generator = "BoardSeqGenerator"
)
private int boardNo;
private String boardTitle;
private String boardContent;
private String boardWriter;
private LocalDateTime boardRegdate = LocalDateTime.now();
@Column(name="BOARD_CNT", nullable = false)
private int boardCnt = 0;
@Transient
private String searchCondition;
@Transient
private String searchKeyword;
}
'네이버 클라우드 캠프 > Spring' 카테고리의 다른 글
[Spring Boot] 게시판 구현하기(6) (0) | 2023.06.26 |
---|---|
[Spring Boot] 게시판 제작하기(4) (0) | 2023.06.22 |
[Spring Boot] 게시판 구현하기(3) (0) | 2023.06.22 |
[Spring Boot] 게시판 구현하기(2) (0) | 2023.06.21 |
[Spring Framework] 게시판 구현하기(1) (0) | 2023.06.19 |