스터디/Spring

Spring 스터디3 - 1

라퐁 2025. 6. 10. 22:01

Spring initializr로 프로젝트 생성

  • Porject: Gradle-Groovy
  • Language: Java
  • Spring Boot: 3.5.0
  • Project Metadata:
    • Group: jpabook
    • Artifact: jpashop
    • Name: jpashop (기본적으로 Artifact 동일)
    • Description: Demo Project for Spring Boot (기본값)
    • Package Name: jpabook.jpashop (Group.Artifact)
    • Packaging: Jar
    • Java: 21
  • Dependencies
    • Spring Web (웹 애플리케이션 개발 필수)
    • Lombok (getter/setter 등 어노테이션으로 생성)
    • Thymeleaf (템플릿 엔진)
    • Spring Data JPA (JPA 사용을 위함)
    • H2 Database (개발용으로 많이 쓰는 데이터베이스)
    • Validation (자바 빈 객체의 값 검증)

깃헙 레포지토리 생성해서 연결

Lombok 적용 테스트

package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class LombokTest {

    private String data;
}

 

@Getter@Setter를 통해 data 값을 넣고 조회하는 LombokTest 클래스 생성

package jpabook.jpashop;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JpashopApplication {

    public static void main(String[] args) {

        // Lombok 적용 테스트
        LombokTest lombokTest = new LombokTest();
        lombokTest.setData("Test");
        System.out.println(lombokTest.getData());

        SpringApplication.run(JpashopApplication.class, args);
    }

}

 

콘솔에 "Test"가 출력되며 확인 완료

JPA와 DB 설정

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/Downloads\spring\springjpa1-v20250325/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true
logging:
   level:
     org.hibernate.SQL: debug
     org.hibernate.orm.jdbc.bind: trace

 

H2 데이터베이스와 연결하고, JPA를 설정한다. spring.jpa.hibernate.ddl-auto의 값은 다음과 같다.

  • none: 스키마를 자동으로 생성하거나 변경하지 않음
  • validate: 엔티티와 스키마가 일치하는지 검증만 하며 변경하지 않음
  • update: 엔티티 변경사항을 반영해 스키마를 자동 갱신함(기존 데이터 유지, 컬럼 삭제 등은 미반영)
  • create: 기존 스키마를 삭제하고 엔티티 기준으로 새로 생성(기존 데이터 모두 삭제)
  • create-drop: create와 동일하게 시작 시 새로 생성하고 종료 시 스키마 삭제