[JPA] 게시판 프로젝트 - 마이그레이션 : H2에서 MySQL (11)

2025. 2. 28. 23:15·프로젝트/Board 프로젝트

 

 

이전 개발 보러 가기

https://taetae99.tistory.com/44

 

[Board] 벡엔드 토이 프로젝트 - 비동기 없이 댓글 수정 및 댓글 생성, 삭제 구현 (10)

이전 개발 보러 가기https://taetae99.tistory.com/40 [Board] 벡엔드 토이 프로젝트 - 게시판 페이징 구현 (9)이전 개발 보러 가기https://taetae99.tistory.com/39 [Board] 벡앤드 토이 프로젝트 - 게시글 수정, 삭제

taetae99.tistory.com

 

목차


     

     

    기능 개발이 어느 정도 완료되어 개발용으로 사용하던 H2 데이터베이스를 요구사항에 맞게

    MySQL로 변경한다.

     

     

     

     

     

    build.gradle 설정

     

     

    build.gradle 설정 시 주의할 점이 있다. 8.0.31 버전을 기준으로 그룹 ID와 아티팩트 ID가 변경되었다. 

     

    자세한 내용은 아래의 링크에서 확인하길 바란다.

    https://blogs.oracle.com/mysql/post/mysql-connectorj-has-new-maven-coordinates

     

     

    MySQL 8.0.31 버전 이전

    dependencies {
    	runtimeOnly 'mysql:mysql-connector-java'
    }

     

     

    MySQL 8.0.31 버전 이후에는 다음과 같이 추가한다.

    dependencies {
    	runtimeOnly 'com.mysql:mysql-connector-j'
    }

     

     

     

    버전에 맞게 의존성을 추가하지 않으면 다음과 같은 오류를 만나게 된다. 

    프로젝트에서 MySQL 8.0.40을 사용 중이었는데 버전과 맞지 않는 의존성을 추가하여

    spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver를 인식하지 못하는 문제가 발생했다.

    의존성 추가 실패

     

    버전에 맞게 의존성을 추가하자.

     

     

     

     

     

    application.yml 설정

     

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/데이터베이스명
        username: 유저명
        password: 비밀번호
        driver-class-name: com.mysql.cj.jdbc.Driver
      jpa:
        hibernate:
          ddl-auto: create
        properties:
          hibernate:
            format_sql: true
      messages:
        basename: messages
      mvc:
        hiddenmethod:
          filter:
            enabled: true
    logging.level:
      org.hibernate.SQL: debug

     

    • datasource: 데이터베이스 연결 설정이다. 데이터베이스명과 유저명, 비밀번호를 설정해주어야 한다.
    • jpa: jpa 관련 설정이다.
      • ddl-auto: 개발단계 이기 때문에 create로 설정하였다.
        • create : 서버를 시작할 때마다 데이터베이스 스키마를 새로 생성하고 기존 데이터를 삭제한다.
    • messages: 메시지 설정이다.
      • basename:  메시지 파일명을 설정한다. (messages.properties) 
    • mvc.hiddenmethod.filter.enabled : html form이 제공하지 않는 delete, put과 같은 메서드를 사용가능하게 해 준다
    • loggin.level: Hibernate가 실행하는 SQL 쿼리를 debug 레벨로 출력한다.

     

     

     

     

     

    데이터 베이스 연동 확인

     

    MySQL WorkBench에서 sql문을 작성하여 데이터가 정상적으로 저장되었는지 확인한다.

    댓글 테이블 select
    comments 테이블

     

    post 테이블 select
    post 테이블
    member 테이블 select
    member 테이블

     

     

    로그를 통해 출력된 SQL문을 확인해 본다.

    comments create
    comments 테이블 create문
    member create
    member 테이블 create문
    post create
    post 테이블 create문

     

    다음과 같은 SQL구문을 작성하여 제약조건이 잘 설정되었는지 확인한다.

    select constraint_name,table_name,constraint_type from information_schema.table_constraints where TABLE_SCHEMA = 'Board';

    제약조건

     

    각 테이블에 대한 기본키 세 개,

    댓글 테이블이 갖고 있는 멤버 테이블의 외래키,

    댓글 테이블이 갖고 있는 게시글 테이블의 외래키,

    게시글 테이블이 갖고 있는 멤버 테이블의 외래키,

    멤버 테이블의 닉네임과 이메일 속성에 대한 UNIQUE 제약조건으로 총 8개의 제약조건이 제대로 설정되었다.

    반응형

    '프로젝트 > Board 프로젝트' 카테고리의 다른 글

    [JPA] 게시판 프로젝트 - 비동기 없이 댓글 수정 및 댓글 생성, 삭제 구현 (10)  (0) 2025.02.24
    [JPA] 게시판 프로젝트 - 게시판 페이징 구현 (9)  (0) 2025.02.15
    [JPA] 게시판 프로젝트 - 게시글 수정, 삭제 기능 개발 (8)  (1) 2025.02.09
    [JPA] 게시판 프로젝트 - 게시글 생성 기능 구현 (7)  (4) 2025.02.03
    '프로젝트/Board 프로젝트' 카테고리의 다른 글
    • [JPA] 게시판 프로젝트 - 비동기 없이 댓글 수정 및 댓글 생성, 삭제 구현 (10)
    • [JPA] 게시판 프로젝트 - 게시판 페이징 구현 (9)
    • [JPA] 게시판 프로젝트 - 게시글 수정, 삭제 기능 개발 (8)
    • [JPA] 게시판 프로젝트 - 게시글 생성 기능 구현 (7)
    taetae99
    taetae99
    우직하게 개발하기
      반응형
    • taetae99
      코드 대장간
      taetae99
    • 전체
      오늘
      어제
      • 분류 전체보기
        • Teck Stack
          • Java
          • Spring
          • DB
          • Redis
          • SpringSecurity
          • Docker
          • HTML
          • AWS
        • 우아한테크코스
        • CS & Architecture
          • DDD
          • CS
          • 디자인 패턴
        • 트러블 슈팅
        • 알고리즘
          • 프로그래머스
          • 백준
        • 프로젝트
          • Board 프로젝트
        • 기타
        • 대회 및 후기
    • 인기 글

    • hELLO· Designed By정상우.v4.10.3
    taetae99
    [JPA] 게시판 프로젝트 - 마이그레이션 : H2에서 MySQL (11)
    상단으로

    티스토리툴바