Helmi

쇼핑몰 프로젝트 생성 본문

SpringBoot

쇼핑몰 프로젝트 생성

Helmi 2023. 3. 12. 21:44

의존성 추가 6개

1. Lombok

2. Thymeleaf : 서버에서 가공한 데이터를 뷰에 보여주기 위한 템플릿 엔진.

3. Spring Data JPA : Spring Data JPA는 JPA를 쉽게 구현할 수 있도록 도와주는 모듈

4. Spring Web

5. MySQL Driver : 프로젝트에서 사용할 데이터베이스.

6. H2 Database : 자바 기반의 관계형 데이터베이스. 매우 가볍고 빠른 데이터베이스. 디스크 기반의 데이터 저장 뿐 아니라 메모리 내에 대이터를 저장하는 인메모리 데이터베이스 기능 지원. 데이터를 영구적으로 저장하는데 권장되는 데이터 베이스는 아니지만 위의 장점들 때문에 테스트용 데이터베이스로 많이 사용.

 

MYSQL  연결 설정하기

application.properties 에 작성

server.port = 8080

#MySql 연결 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/shop?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234

#Jpa 설정, 실행되는 쿼리 콘솔 출력
spring.jpa.properties.hibernate.show_sql = true

#콘솔창에 출력되는 쿼리를 가독성이 좋게 포멧팅
spring.jpa.properties.hibernate.format_sql = true

spring.jpa.hibernate.ddl-auto=create
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

#Live Reload 기능 활성화
spring.devtools.livereload.enabled=true

#cache 사용 중지
spring.thymeleaf.cache=false

#시큐리티 접속 설정
spring.security.user.name=user
spring.security.user.password=1234

1) 데이터베이스에 연결하기 위해 mysql jdbc driver 설정

2) 연결할 데이터베이스의 URL, 포트번호, 데이터베이스의 이름을 입력

  spring.datasource.hikari.jdbc-url=jdbc:mysql://{url}:{port}/{db}

3), 4) 1장에서 데이터베이스를 설치할 때 입력했던 아이디와 비번 입력 

5) 데이터베이스 초기화 전략을 설정. 

6) SQL은 표준 SQL과 DBMS 벤더에서 제공하는 SQL이 존재. (≒각 공급업체서 만든 SQL을 방언(Dialect)이라 생각하면 됨) 현재 사용하는 데이터베이스는 MySQL → JPA에 MySQL이어서 JPA에 MySQL8Dialect를 사용하라고 알려줌.

만약 데이터베이스를 오라클로 교체해도 오라클의 Dialect를 설정해주면 문제없이 애플리케이션 구동 가능.

데이터베이스 초기화 전략 - DDL AUTO 옵션

spring.jpa.hibernate.ddl-auto 옵션 통해 애플리케이션 구동 시 JPA의 데이터베이스 초기화 전략 설정 가능.

 

- none : 사용하지 않음

- create : 기존 테이블 삭제 후 테이블 생성

- create-drop : 기존 테이블 삭제 후 테이블 생성. 종료 시점에 테이블 삭제

- update : 변경된 스키마 적용

- validate : 엔티티와 테비을 정상 매핑 확인

 

update 옵션에서 컬럼 삭제는 엄청난 문제 발생 시킬 수 있기 때문에 컬럼 추가만 반영.

개발 초기에는 create 또는 update 옵션 이용해 익숙해지는데 집중하고 추후에 validate 옵션 설정 해주는 것이 좋음. 실제 운영환경 아니므로 개발 편의상 create 옵션 사용해 진행.

스테이징, 운영환경에서는 절대로 create, create-drop, update 사용하면 안됨.

스테이징과 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스에서 직접. none을 사용하거나 validate 사용해 정상적인 매핑 관계만 확인.

- 스테이징 환경 : 운영환경과 거의 동일한 환경으로 구성. 운영환경에 베포 전 여러 가지 기능 (성능, 장애 등) 검증

- 운영 환경 : 실제 서비스 운영하는 환경

'SpringBoot' 카테고리의 다른 글

Entity 매핑 관련 어노테이션  (0) 2023.03.13
상품 엔티티 설계  (0) 2023.03.13
JPA란?  (0) 2023.03.07
@Lombok 어노테이션 정리  (0) 2023.03.06
스프링 부트 프로젝트 만들기  (0) 2023.03.06