[React/연습] #02. React back-end 세팅 (1)
Updated:
이제 이 블로그를 참고해서 백엔드 서버를 구축하려고 한다.
build.gradle <= 의존성(dependency) 주입
백엔드 프로젝트로 가서 build.gradle
파일을 수정할 것이다.
build.gradle
파일을 처음으로 열어보면 dependencies
부분이 이렇게 생겼다:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
첫 번째 포스팅에서 프로젝트를 생성할 때 설정했던 대로 되어있는 것이다.
여기에 DB 기본 세팅에 필요한 JPA와 자바 개발에 필요한 Lombok 의존성을 추가하려고 한다.
dependencies {
// lombok 의존성 추가
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
annotationProcessor 'org.projectlombok:lombok'
// jpa 의존성 추가 (for database)
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'com.h2database:h2:1.4.193'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
application.properties
src/main/resources/
으로 가면 application.properties
파일이 있다.
처음에 이 파일은 아무것도 없는 빈 파일인데, 여기에 아래의 코드를 추가한다.
# H2 Database
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
# JPA
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.defer-datasource-initialization=true
SQL문
그리고 application.properties
와 같은 위치에 import.sql
파일을 생성하고 아래의 코드를 copy and paste 한다.
DROP TABLE IF EXISTS TB_BOARD CASCADE;
CREATE TABLE TB_BOARD (IDX BIGINT GENERATED BY DEFAULT AS IDENTITY, CONTENTS VARCHAR(255), CREATED_AT TIMESTAMP, CREATED_BY VARCHAR(255), TITLE VARCHAR(255), PRIMARY KEY (IDX));
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (1, '게시글 제목1', '게시글 내용1', '작성자1', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (2, '게시글 제목2', '게시글 내용2', '작성자2', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (3, '게시글 제목3', '게시글 내용3', '작성자3', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (4, '게시글 제목4', '게시글 내용4', '작성자4', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (5, '게시글 제목5', '게시글 내용5', '작성자5', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (6, '게시글 제목6', '게시글 내용6', '작성자6', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (7, '게시글 제목7', '게시글 내용7', '작성자7', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (8, '게시글 제목8', '게시글 내용8', '작성자8', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (9, '게시글 제목9', '게시글 내용9', '작성자9', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (10, '게시글 제목10', '게시글 내용10', '작성자10', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (11, '게시글 제목11', '게시글 내용11', '작성자11', NOW());
INSERT INTO TB_BOARD (IDX, TITLE, CONTENTS, CREATED_BY, CREATED_AT) VALUES (12, '게시글 제목12', '게시글 내용12', '작성자12', NOW());
이 코드는 TB_BOARD
테이블과 데이터를 생성하는 H2 Database 기반 SQL문이다.
참고한 블로그에 있는 코드를 그대로 긁어왔다.
붙여넣기 한 다음엔 테이블 생성하는 코드 부분은 주석 처리한다.
VS Code에서 주석 처리하는 단축키는 command⌘
+/
이다.
Entity 클래스 생성
이제 java로 넘어와서 Entity 클래스를 생성해 볼 건데, 그 전에 파일을 분류해두기 위해 폴더를 구성해 놓는다.
src/main/
의 패키지로 이동해서 Main 클래스가 있는 위치에 db
, dto
, util
폴더를 만든다.
그리고 db
폴더 안에 BoardEntity.java
파일을 만든다.
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Table(name = "TB_BOARD")
@DynamicInsert
@DynamicUpdate
public class BoardEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idx;
private String title;
private String contents;
private String createdBy;
private Date createdAt;
}
참고로 import
부분은 annotation 코드를 쓸 때 자동으로 불러와진다.
이제 서버를 실행해 본다.
서버를 실행하려면 첫 포스팅에서 했던 것처럼 Main 클래스가 있는 ~~Application.java
파일을 열어서, main문 위에 있는 Run 버튼을 클릭한다.
프로젝트가 잘 실행되고 있다면 터미널 창에 이런 내용이 뜬다.
이런 상태에서 브라우저를 열어 localhost:8080/h2-console
에 접속하면 아래와 같은 화면이 뜬다.
여기서 JDBC URL
은 jdbc:h2:mem:testdb
를 입력하고, 유저네임에는 sa
를 입력한 다음에 Test Connection
버튼을 눌러본다.
이때 Test successful라는 글씨가 뜨면 접속이 가능한 상태이므로, Connect
버튼을 눌러서 접속한다.
그러면 왼쪽에 TB_BOARD
테이블이 있는 것을 확인할 수 있다.
또한 SQL statement 입력 칸에 SELECT 문을 작성하면 다음과 같이 TB_BOARD
의 데이터가 잘 출력된다.
Leave a comment