CRUD 기능과 로그인, 관리자 기능 등을 구현한 웹 게시판을 만들 것입니다.
*IntelliJ IDEA
Spring Initializer 사이트에 접속하여 Spring을 설정해줍니다.
Gradle을 사용하여 프로젝트를 빌드하고 언어는 Java를 사용해줍니다.

Spring Boot DebTools
Live Reload라는 기능을 사용하기 위해 추가해줍니다. Live Reload는 파일이 수정되었을 때 자동으로 브라우저를 새로고침 해주는 라이브러리입니다.
Srping Web
Web MVC를 사용하여 웹 애플리케이션을 만드는데 필요한 Spring Boot의 기본 요소(어노테이션 등)와 내장 톰캣을 가지고 있습니다.
Thymeleaf
Controller가 전달하는 데이터를 이용하여 동적으로 화면을 구성해주는 라이브러리입니다.
Lombok
Getter와 Setter, 생성자 등을 어노테이션 하나로 자동 생성해주는 라이브러리입니다.
MariaDB Driver
MariaDB를 사용하기 위한 라이브러리입니다.
Spring Data JPA
Srping Data JPA를 이용하여 데이터베이스를 관리하기 위한 라이브러리입니다.
다운로드한 파일을 C드라이브 밑에 Project 폴더에 압축을 해제해줍니다.
그 후 IntelliJ에 들어가서 Project 폴더에 풀어둔 파일을 선택 후 안에 있는 build.gradle 파일을 열어줍니다.
프로젝트 생성 후 패치 파일이 다운로드가 다 되었으면 IntelliJ Setting(단축키 Ctrl + Alt + S)에 들어가서 gradle을 검색 후 Build와 Run을 IntelliJ로 변경하여 실행 속도를 빠르게 해줍니다.


ERDcloud를 이용하여 DB를 설계하였습니다.
use [스키마 이름];
CREATE TABLE `file` (
`file_id` BIGINT NOT NULL AUTO_INCREMENT,
`file_name` VARCHAR(255) NOT NULL,
`file_size` INT NOT NULL,
`file_path` VARCHAR(255) NOT NULL,
`board_id` BIGINT NOT NULL,
`file_type` VARCHAR(255) NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '0: 비활성화, 1: 활성화',
PRIMARY KEY (`file_id`)
);
CREATE TABLE `comment` (
`comment_id` BIGINT NOT NULL AUTO_INCREMENT,
`content` TEXT NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
`board_id` BIGINT NOT NULL,
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '0: 비활성화, 1: 활성화',
`user_id` BIGINT NOT NULL COMMENT '작성자',
`liked` BiGINT NOT NULL,
PRIMARY KEY (`comment_id`)
);
CREATE TABLE `category` (
`category_id` BIGINT NOT NULL,
`post_id` BIGINT NOT NULL
);
CREATE TABLE `board` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(50) NOT NULL,
`content` TEXT NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
`enabled` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '0: 비활성화, 1: 활성화',
`category_id` INT NOT NULL,
`views` INT NOT NULL,
`user_id` BIGINT NOT NULL,
`liked` BIGINT NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `user` (
`user_id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`email` VARCHAR(50) NOT NULL,
`login_id` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`enabled` TINYINT NOT NULL DEFAULT 1,
`role` TINYINT NOT NULL DEFAULT 0 COMMENT '0: 사용자, 1: 관리자',
PRIMARY KEY (`user_id`)
);
CREATE TABLE `child_comment` (
`child_comment_id` BIGINT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT NOT NULL COMMENT '작성자',
`comments_id` BIGINT NOT NULL COMMENT '부모댓글',
`contents` TEXT NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '0: 비활성화, 1: 활성화',
PRIMARY KEY (`child_comment_id`)
);