[Spring Boot] 쇼핑몰 프로젝트 (1)

YulHee Kim·2021년 11월 22일
0

✔️ [참고한 책] 백견불여일타 스프링 부트 쇼핑몰 프로젝트 with JPA
구훈님께서 쓰신 책을 공부해보려한다 ㅎㅎ

✏️ 스프링 부트의 특징

1. 내장 서버를 이용해 별도의 설정 없이 독립 실행이 가능한 스프링 애플리케이션
2. 톰캣, 제티 또는 언더토우와 같은 웹 애플리케이션서버(WAS) 자체 내장

  • 내장 서버로 톰캣을 사용
  • 웹 서버와 관련된 설정을 하지 않아도 됨

3. 빌드 구성을 단순화하기 위한 'Spring Boot Starter'의존성 제공

  • 스타터: 설정을 자동화해주는 모듈
  • 프로젝트에서 설정해야하는 다수의 의존성들을 스타터가 포함하고 있음
  • 그래서 스타터에 대한 의존성만 추가하면 됨

4. XML 설정 없이 단순 자바 수준의 설정 방식 제공

  • 자바 코드는 컴파일러의 도움을 받기 때문에 오타 등의 설정 정보 오류를 미리 알 수 있음

5. JAR를 이용해 자바 옵션만으로 배포 가능
6. 애플리케이션의 모니터링과 관리를 위한 스프링 액추에이터 제공

  • 스프링 액추에이터: 스프링 부트 애플리케이션에서 제공하는 여러 가지 정보를 손쉽게 모니터링 할 수 있도록 도와주는 라이브러리

✏️ Spring Boot Project 생성하기

Spring Initializer 사이트에서 다운

프로젝트 설정

빌드 툴 : 메이븐
언어 : java 11
패키징 : Jar
의존성 : Spring Web, Thymeleaf, Spring Data JPA, MySQL Driver, H2 Database

✏️ Lombok 라이브러리

롬복 라이브러리는 반복적인 Getter/Setter,ToString과 같은 반복적인 자바 코드를 컴파일할 때 자동으로 생성해주는 라이브러리입니다. Lombok 라이브러리를 사용하면 반복적인 소스코드를 제거할 수 있으므로 코드를 좀 더 깔끔하게 짤 수 있습니다.

자주 사용하는 어노테이션들

  • @Getter/Setter
    : 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메소드 생성
  • @ToString
    : toString()메소드 생성
  • @ToString(exclude={"변수명"})
    : 원하지 않는 속성을 제외한 toString() 메소드 생성
  • @NonNull
    : 해당 변수가 null 체크, NullPointerException 예외 발생
  • @EqualsAndHashCode
    : equals()와 hashCode() 메소드 생성
  • @Builder
    : 빌더 패턴을 이용한 객체 생성
  • @NoArgsConstructor
    : 파라미터가 없는 기본 생성자 생성
  • @AllArgsConstructor
    : 모든 속성에 대한 생성자 생성
  • @RequiredArgsConstructor
    : 초기화되지 않은 Final, @NonNull 어노테이션이 붙은 필드에 대한 생성자 생성
  • @Log
    : log 변수 자동 생성
  • @Value
    : 불변 클래스 생성
  • @Data
    : @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 합친 어노테이션

✏️ MySQL 설치

create database shop default character set utf8 collate utf8_general_ci;
show databases;

✏️ application.properties 설정

프로젝트 생성 후 application.properties 설정하기

#애플리케이션 포트 설정
server.port = 80

#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=비번

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

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

#쿼리에 물음표로 출력되는 바인드 파라미터 출력
logging.level.org.hibernate.type.descriptor.sql=trace

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

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

  • none: 사용하지 않음
  • create: 기존 테이블 삭제 후 테이블 생성
  • create-drop: 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제
  • update: 변경된 스키마 적용
  • validate: 엔티티와 테이블 정상 매핑 확인

개발 초기에는 create 또는 update 옵션을 이용하고 추후에 validate 옵션을 설정해주는 것이 좋습니다.
실제 운영환경에선 none이나 validate를 이용해야합니다.


JPA에 대한 내용과 엔티티설계를 바로 공부해보겠습니당.

profile
백엔드 개발자

0개의 댓글