본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

20일차 - 점프 투 스프링부트

데이터 초기화(베이스 데이터 추가하기)

jpa:
  hibernate:
    ddl-auto: create

ddl-auto: create 상태

(update로 설정하는 방법도 있지만, row를 변경하는 sql문을 실행하면 스프링부트를 재실행해도 변경된 값이 유지된다. 그러므로 create 상태에서 베이스 데이터를 추가해주는 방법을 선택한 것!)


 

spring:
  profiles:
    active: dev

기본적으로 dev 환경임을 명시

  

@Configuration
@Profile({"dev", "test"})
public class NotProd {
    @Bean
    public CommandLineRunner initData(...){
        return args -> {
            ...
        };
    }

@Profile({"dev", "test"}) : 개발 환경(dev)이거나 테스트 환경(test)일 때 실행한다.

@Bean : @Component와 비슷한 의미. 이 메서드의 리턴값이 IoC컨테이너에 등록된다. 반드시 클래스에 @Configuration이 붙어 있어야 한다.

CommandLineRunner : 서버 시작 시점에 실행되며, CommandLineRunner를 return하는 메서드를 @Bean으로 정의하여 사용할 수 있다.


점프 투 스프링부트

https://wikidocs.net/book/7601

 

점프 투 스프링부트

점프 투 스프링부트는 Spring Boot Board(SBB)라는 이름의 게시판 서비스를 만들어가는 과정을 설명한 스프링부트 입문서이다. 자바 설치부터 시작하여 서비스 운…

wikidocs.net

  • ORM(Object Relational Mapping) : 객체와 테이블을 맵핑해주는 기술. ORM을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 데이터베이스 종류에 상관 없이 일관된 코드를 유지할 수 있어서 프로그램을 유지·보수하기가 편리하고, 내부에서 안전한 SQL 쿼리를 자동으로 생성해 주므로 개발자가 달라도 통일된 쿼리를 작성할 수 있고 오류 발생률도 줄일 수 있다.
  • JPA : ORM의 일종. 자바 진영에서 ORM의 기술 표준으로 사용하는 인터페이스의 모음. JPA는 일종의 규약이며 우리가 실제로 사용하는 기술은 Hibernate이다.
  • 엔티티(Entity) : 데이터베이스 테이블과 매핑되는 자바 클래스. 모델 또는 도메인 모델이라고 부르기도 한다.
  • 임피던스 불일치(객체-개체 패러다임 불일치) : 객체 모델을 관계형 모델에 저장할 때 발생하는 다양한 문제들. JPA가 그 불일치를 해소해준다.

기본 세팅


인텔리제이 세팅

  • File > Settings >
    • Build, Execution, Deployment > Build Tools >
      • Gradle > Build and run using & Run tests using : IntelliJ IDEA, Gradle JVM : 17
      • Compiler > Build project automatically 체크
    • Advanced Settings > Allow auto-make to start … 체크
  • File > Project Structure > Project Settings > Project > SDK : 17
  • 우측 하단에 뜨는 Lombok requires enabled … > Enable annotation processing 클릭

build.gradle

dependencies {
    
    ...

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
}

application.yml

server:
  port: 8010
spring:
  thymeleaf:
    cache: false
    prefix: file:src/main/resources/templates/
  devtools:
    livereload:
      enabled: true
    restart:
      enabled: true
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://127.0.0.1:3306/DB_이름?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
    username: DB 아이디
    password: 비밀번호
  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show_sql: true
        format_sql: true
        use_sql_comments: true