2022년 5월 9일 TIL

yshjft·2022년 5월 9일
0

데브코스 TIL

목록 보기
29/45
post-custom-banner

Spring Frameworks을 활용한 데이터 레이어(RDB) 접근 방법

필요한 외부 의존성

spring-boot-starter-data-jdbc: JDBC API, JDBC Template
mybatis-spring-boot-starter: Mybatis
spring-boot-starter-data-jpa: JPA

JDBC API, JDBC TEMPLATE

참고2
참고1

JDBC API

반복적인 작업이 존재: Connection 획득, Statement 획득, Connection 반납, Statement 반납, 예외처리

JDBC TEMPLATE

반복적인 작업은 줄었으나 코드와 쿼리가 섞여 유지보수가 여전히 힘들다.

MyBatis

자바 코드와 쿼리를 분리하여 쿼리 수정으로 자바 코드 수정 이나 컴파일 하는 작업을 하지 않도록 한다.

interface + Annotation OR XML

2가지 방법을 통해 쿼리를 작성한다.

JPA

왜 사용해야 하는가?

  • 생산성 증진
    SQL에 의존적인 개발에서 탈피하여, 객체중심으로 생산적인 개발이 가능하다.

    • ex1) JPA는 자바의 객체와 DB의 테이블을 매핑함으로서 객체가 변경되면 테이블도 변경한다.
    • ex2) 컬럼 추가나 변경을 손쉽게할 수 있도록 한다.
  • 객체와 관계형테이블의 패러다임 불일치 해결
    테이블을 객체처럼 다룰 수 있게 해준다.

@Transactional

영속성 컨테스트 안에서 관리를 하겠다!

application.yml 예시

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:~/test
    username: sa
    password:
  jpa:
    generate-ddl: true
    open-in-view: false
    show-sql: true
    hibernate:
      ddl-auto: create
  h2:
    console:
      enabled: true

spring.jpa.properties.hbm2ddl.auto

오늘 강의 중 마지막 강의에서는 Auto Configuration을 사용하지 않고 JPA를 사용하는데 필요한 설정들을 직접 설정하는 것을 하였다. 이 때 spring.jpa.properties.hbm2ddl.auto를 하면서 알게된 것들을 정리하겠다.

알게된 내용

문서에 따르면 spring.jpa.properties.hbm2ddl.auto는 spring.jpa.hibernate.ddl-auto와 동일하다. 현재 강의에서는 auto configuration을 사용하지 않고 필요한 것을 직접 Bean으로 설정하여 사용하고 있다. 이 때 JpaProperties 객체 이용하게 되는데 JpaProperties 클래스의 내부를 보면 ddl-auto에 해당하는 속성이 없는 것을 확인할 수 있다. ddl-auto에 대한 설정을 JpaProperties에 전달하여 사용하기 위해 spring.jpa.properties.hbm2ddl.auto를 사용하게 되는거 같.

추가)

JpaProperties는 EntityManagerFactory에 대한 외부 설정(application.yml) 내용을 담고 있는 객체인거 같다.

참고 내용

profile
꾸준히 나아가자 🐢
post-custom-banner

0개의 댓글