ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • *[TIL] JPA , Spring Data JPA
    CodeStates_Backend/TIL (Today I Learned) 2022. 7. 24. 11:58

    1. JPA (Java Persistence API , Jakarta Persistence API)

    * Java 진영 ORM 표준 기술 스펙.

    * '스펙'이므로 인터페이스로 스펙이 정의 되어있을 뿐임. 이를 구현한 여러 구현체들을 이용하게 됨.

    * 대표적인 구현체로 Hibernate ORM, EclipseLink, DataNucleus 등이 있는데 Hibernate 이 가장 많이 쓰이고 우리가 배울 것임.

    * Hibernate ORM도 사실 내부적으로는 JDBC API를 사용하고 있음.

    * 아래 그림은 JPA의 위치이다.

    JPA 위치

    2. 영속성 컨텍스트 (Persistence Context)

    * Persistence 라는 단어가 들어간 이유는, 영속성 컨텍스트를 사용하기 때문임. 

    * ORM 답게, 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트에 보관하여 애플리케이션 내에 오래 보관하고 이를 이용해 테이블에 접근함.

    * 아래 그림은 영속성 컨텍스트의 구조이다.

     

     

    3. JPA API 설정

    * 의존 라이브러리(build.gradle)

    dependencies {
    	implementation 'org.springframework.boot:spring-boot-starter-web'
    	implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // (1)
    	compileOnly 'org.projectlombok:lombok'
    	runtimeOnly 'com.h2database:h2'
    	annotationProcessor 'org.projectlombok:lombok'
    	testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }

    * property(application.yml)

    spring:
      h2:
        console:
          enabled: true
          path: /h2     
      datasource:
        url: jdbc:h2:mem:test
      jpa:
        hibernate:
          ddl-auto: create  # (1) 스키마 자동 생성
        show-sql: true      # (2) SQL 쿼리 출력

    -> ddl-auto 속성 관련 추가 내용

    더보기

    ddl-auto 옵션 종류

    • create: 기존테이블 삭제 후 다시 생성 (DROP + CREATE)
    • create-drop: create와 같으나 종료시점에 테이블 DROP
    • update: 변경분만 반영(운영DB에서는 사용하면 안됨)
    • validate: 엔티티와 테이블이 정상 매핑되었는지만 확인
    • none: 사용하지 않음(사실상 없는 값이지만 관례상 none이라고 한다.)

    주의할 점

    • 운영 장비에서는 절대 crate, create-drop, update 사용하면 안된다.
    • 개발 초기 단계는 create 또는 update
    • 테스트 서버는 update 또는 validate
    • 스테이징과 운영 서버는 validate 또는 none

    하지만 로컬 환경을 제외한 나머지 서버에서는 최대한 직접 쿼리를 날려서 적용하는 것이 가장 좋다.

     

    'CodeStates_Backend > TIL (Today I Learned)' 카테고리의 다른 글

    [모의기술면접] Section4  (0) 2022.08.18
    [TIL]메소드 참조; method reference  (0) 2022.07.21
    [TIL][모의기술면접#3]  (0) 2022.07.20
    [TIL]삽입 정렬 Insertion Sort  (0) 2022.07.18
    [TIL] Spring Rest Docs  (0) 2022.07.16
Designed by Tistory.