728x90
반응형
게시판 board- 글post - 댓글 reply
게시판과 글은 1:N 관계
글과 댓글은 1:N 관계
- Language : Java17
- Framework: Spring Boot 3.1.11
- DBMS: MY SQL 5.7.37
- DB Library: JPA
- Tool: Intellij
프로젝트 오픈 후, application.properties -> application.yaml 으로 변경 후 DB에 맞게 설정해준다.
spring:
jpa:
show-sql: true
properties:
format_sql: true
dialect: org.hibernate.dialect.MySQL8Dialect
hibernate:
ddl-auto: validate
datasource:
url: jdbc:mysql://localhost:3306/my_board?useSSL=false&useUnicode=true&allowPublicKeyRetrieval=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: [...]
MySql에 my_board 스키마 생성
board, post, reply 테이블의 ERD diagram 제작
board 과 post 는 1: N 관계이고
post와 reply 는 1: N 관계이다.
완성 했다면 스키마 이름을 변경하고
File - Export - Foward Engineer 선택, SQL 구문을 만들어 준다.
FK에 대한 설정을 제거해준다.
FK를 사용하면 강한 제약이 걸리기 때문에 현업에서 테이블을 수정할 때 많은 에러를 만들어 낸다고 한다.
그래서 보통은 id 컬럼을 만들고 join을 통해 사용한다고 한다.
-- MySQL Script generated by MySQL Workbench
-- Fri Apr 26 17:48:01 2024
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
-- -----------------------------------------------------
-- Table `my_board`.`board`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `my_board`.`board` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`board_name` VARCHAR(100) NOT NULL,
`status` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `my_board`.`post`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `my_board`.`post` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`board_id` BIGINT NOT NULL,
`user_name` VARCHAR(45) NOT NULL,
`password` INT(4) NOT NULL,
`status` VARCHAR(45) NOT NULL,
`title` VARCHAR(45) NOT NULL,
`content` TEXT NULL,
`posted_at` DATETIME NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `my_board`.`reply`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `my_board`.`reply` (
`id` INT NOT NULL AUTO_INCREMENT,
`post_id` BIGINT NOT NULL,
`user_name` VARCHAR(45) NOT NULL,
`password` INT(4) NOT NULL,
`status` VARCHAR(45) NOT NULL,
`title` VARCHAR(45) NOT NULL,
`content` TEXT NOT NULL,
`replied_at` DATETIME NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
실행해주고 테이블이 생성된 것 확인 후,
메인을 실행 시켜 포트가 잘 뜨는 지 확인. 이렇게 나오면 성공
my-board 하위에 sql file을 만들어 관리하는 것도 좋은 방법이라고 합니다.
728x90
'JAVA > 프로젝트' 카테고리의 다른 글
Spring Boot : 게시판 End point 개발. board와 post 생성 (0) | 2024.04.26 |
---|---|
Spring Boot : Entity 개발, DB 테이블과 연동 (0) | 2024.04.26 |
Spring - MVC와 템플릿 엔진 (0) | 2023.07.28 |
Spring 정적 컨텐츠 (0) | 2023.07.28 |
Spring- View 환경설정 (0) | 2023.07.28 |