간단한 게시판 만들기 - 1

Gihongg·2024년 4월 8일

Spring Boot

목록 보기
16/24
post-thumbnail

이 포스트는 MySQL과 Spring Boot와 MySQL, Datagrip을 설정하고, 사용할 수 있다는 전제하에 작성되었습니다.

이번 포스트에서는 게시판, 게시글, 댓글을 작성할 수 있는 게시판을 만들어볼 것이다.

이러한 기능을 만드는데에는 먼저 아래의 작업이 필요하다.

  1. 데이터베이스 구성
  2. Spring boot로 서버 구성

데이터베이스 구성

1. ERD 구성하기

먼저 ERD를 생성해보자
https://dbdiagram.io/docs/
위의 사이트는 ERD를 그리면 쿼리문을 작성해주는 사이트인데

아래의 사진에서 왼쪽과 같이 작성하면 오른쪽 화면처럼 그려준다. 그리고 쿼리문을 만들어준다.

너무 커서 잘 안보이니까 좀더 확대해서 보면 아래와 같다.

이렇게 테이블들을 만들어주면 쿼리문을 export 할 수 있다.

여기에서는 MySQL을 쓰니 MySQL을 Export 하자.

2. MySQL 서버 시작하기

  • InteliJ에서 empty project를 하나 만들어서 안에 mysql 패키지를 만든다.
  • 그리고 그 안에 docker-compose.yaml파일을 만든다.
  • 최종적으로 아래와 같은 디렉터리를 만든다.

그리고 내부는 아래와 같이 작성하면 도커환경에서 mysql 서버가 실행된다.

version: "3"
services:
  db:
    image: mysql:8.3.0
    restart: always
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_ROOT_PASSWORD: root1234!!
      TZ: Asia/Seoul
      MYSQL_LOWER_CASE_TABLE_NAMES: "1"
      MYSQL_CHARACTER_SET_SERVER: utf8mb4
      MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
    volumes:	//이 아래의 경로는 자신에게 맞게 커스터마이징 한다.
      - /Users/gihongjo/Temp/MYSQL:/var/lib/mysql

도커에서 확인해보면 아래와 같이 보일 것이다.


3. 데이터베이스 구축

이제 데이터베이스를 구축해보자.

먼저 Datagrip으로 아래와 같이 스키마를 만들어주자.

simple_board 스키마를 생성해주자.

그리고 아까 dbdiagram에서 생성했던 sql문을 붙여넣어주자.

만약 못만들었다면 아래의 sql 쿼리문을 넣으면 된다.

CREATE TABLE `board` (
                         `id` int PRIMARY KEY NOT NULL AUTO_INCREMENT,
                         `board_name` varchar(100) NOT NULL,
                         `status` varchar(50) NOT NULL
);

CREATE TABLE `post` (
                        `id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT,
                        `board_id` bigint(32),
                        `user_name` varchar(50) NOT NULL,
                        `password` varchar(4) NOT NULL,
                        `email` varchar(50) NOT NULL,
                        `status` varchar(50) NOT NULL,
                        `title` varchar(100) NOT NULL,
                        `content` text,
                        `posted_at` datetime NOT NULL
);

CREATE TABLE `reply` (
                         `id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT,
                         `post_id` bigint(32) NOT NULL,
                         `board` bigint(32),
                         `user_name` varchar(50) NOT NULL,
                         `password` varchar(4) NOT NULL,
                         `email` varchar(50) NOT NULL,
                         `status` varchar(50) NOT NULL,
                         `title` varchar(100) NOT NULL,
                         `content` text NOT NULL,
                         `posted_at` datetime NOT NULL
);

ALTER TABLE `post` ADD FOREIGN KEY (`board_id`) REFERENCES `board` (`id`);

ALTER TABLE `reply` ADD FOREIGN KEY (`post_id`) REFERENCES `post` (`id`);

그럼 이제 테이블들이 준비 되었다.

Spring Boot 구성

를 하려고 했는데 너무 길어져서 다음 포스트에서 다룬다..

profile
전천후 개발자

0개의 댓글