1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.
기존에는 네이버 클라우드에 DB 연결되어있었는데, 기간 만료의 문제로 Local로 변경하여 연결을 해 볼 예정입니다.
Database: 🐬 MySQL
- build.gradle
dependencies {
runtimeOnly 'com.mysql:mysql-connector-j'
}
- application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb?serverTimezone=Asia/Seoul
username: DB 생성 시, 작성한 username
password: DB 생성 시, 작성한 password
+ 리팩토링
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Seoul
username: DB 생성 시, 작성한 username
password: DB 생성 시, 작성한 password
- useSSL=false
Establishing SSL connection without server's identity verification is not recommended
최신 mysql버전을 사용 시, SSL연결을 기본으로 사용
SSL을 사용하지 않을 경우, 명시하지 않으면 경고가 발생하므로 이를 제거하기 위해 추가
기존 JPA 관련 설정은 다음과 같습니다.
application.yml
jpa:
# Application 구동할 때마다, Entity로 정의된 테이블을 생성
generate-ddl: true
hibernate:
# 스키마 생성, 테이블 존재 시 변경된 부분만 반영
ddl-auto: update
show-sql: true
database: mysql
database-platform: org.hibernate.dialect.MySQL8Dialect
- generate-ddl: true
데이터베이스 스키마를 자동으로 생성하거나 업데이트하는 기능을 활성화하는 설정
🚨 개발 및 테스트 환경에서 유용할 수 있지만, 운영 환경에서는 주의해서 사용
+ 리팩토링
jpa:
# Application 구동할 때마다, Entity로 정의된 테이블을 생성
generate-ddl: true
hibernate:
# 스키마 생성, 애플리케이션 실행 시 모든 table trop 후 create
ddl-auto: create
# 실행 sql문 콘솔에서 확인
show-sql: true
# formatter
properties:
hibernate:
format_sql: true
use_sql_comments: true
highlight_sql: true
# using database
database: mysql
# mysql 상세 지정
database-platform: org.hibernate.dialect.MySQL8Dialect
- ddl-auto: update → create
개발 초기 단계이고, Entity 수정 예정이기에 애플리케이션 실행 시마다 table을 새롭게 만들고자 변경
- formatter 추가
DDL이 출력된 모습이 다음과 같이 변경됩니다.
Hibernate: create table trip_schedule (schedule_id integer not null auto_increment, mod_date datetime(6), reg_date datetime(6) not null, user_id varchar(20) not null, city_name varchar(30), date_list varchar(500), primary key (schedule_id)) engine=InnoDB
+ 리팩토링
[Hibernate]
create table trip_schedule (
schedule_id integer not null auto_increment,
mod_date datetime(6),
reg_date datetime(6) not null,
user_id varchar(20) not null,
city_name varchar(30),
date_list varchar(500),
primary key (schedule_id)
) engine=InnoDB
🙋♀️
본 포스트는 공부 목적으로 작성하였습니다.
보시는 도중 잘못된 부분이나 개선할 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다.
📑
참고 자료
'PlayGround > 마실가실 리팩토링' 카테고리의 다른 글
[1년 후 마실가실] Custom Exception (0) | 2024.08.10 |
---|---|
[1년 후 마실가실] Test Code 작성 (0) | 2024.08.05 |
[1년 후 마실가실] REST API 구현 (0) | 2024.08.04 |
[1년 후 마실가실] Entity 수정 (0) | 2024.07.28 |
[1년 후 마실가실] ERD 수정 (2) | 2024.07.27 |