SpringBoot + Gradle + Spring Data JPA 웹 게시판 환경 설정

뚜우웅이·2023년 10월 13일

웹 게시판 프로젝트

CRUD 기능과 로그인, 관리자 기능 등을 구현한 웹 게시판을 만들 것입니다.

💻기술 스택

Backend

  • Spring Boot
  • Java
  • Spring Data JPA

DB

  • MariaDB

Frontend

  • BootStrap
  • HTML5
  • CSS

OS

  • Linux(ubuntu)

Collaboration

  • Git

Tools

*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로 변경하여 실행 속도를 빠르게 해줍니다.

DB 설계

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`)
);
profile
공부하는 초보 개발자

0개의 댓글