본문 바로가기
일/Spring Boot JPA

Spring Boot JPA #5

by blair2dev 2021. 12. 12.

h2 디비랑 연결하는 실습

 

h2??

h2 디비는 서버의 램을 사용하는 인메모리 디비이다. 

따라서 서버 어플리케이션을 재시작하면 데이터가 사라진다. 

 

application.properties 

여기 파일을 

application.yml

로 바꾸고 

아래 내용 복붙

 

실서비스 때는 아래 내용으로 바꾸고 쓴다. 

  jpa:

    hibernate:

      ddl-auto: none

    generate-ddl: false

 

https://deep-dive-dev.tistory.com/31

참고 h2는 기본적으로 create-drop이 디폴트이다. 

 

application.yml

server:
port:8083

spring:
  h2:
    console:
      enabled: true
      path: /h2-console

  datasource:
    url: jdbc:h2:mem:backofficeDb
    #url: jdbc:h2:file:/Users/parkkyutae/Documents/sources/github/fastcampus-demo-01/record-example/sample1/backofficeDb
    driver-class-name: org.h2.Driver
    username: root
    password: '1111'

  jpa:
    hibernate:
      ddl-auto: create-drop
    generate-ddl: true

    properties:
      format_sql: true
      hibernate:
        show-sql: true

  mvc:
    hiddenmethod:
      filter:
        enabled: true

  mustache:
    suffix: .html

logging:
  level:
    org.hibernate.SQL: trace
    org.hibernate.type: trace

 

 

entity 라는 패키지를 만들고, Notice 라는 엔터티 클래스를 하나 만든다. 

 

 

JPA repository interface 를 생성한다. 

 

 

 

 

의존성 주입 (Dependancy Injection)

이쯤에서 의존성 주입 (DI) 이라는 개념이 나온다. 

spring에서 의존성 주입은 “현 클래스에서 필요한 객체를 생성하는 방법”으로 이해하면 될 것 같다. 

 

의존성 주입의 방법은 

클래스 내부에서 new 로 새로운 객체를 생성하는 방법 

외부에서 setter를 통해 주입받는 방법

외부에서 constructor를 통해 주입받는 방법 

 이 있다. 

 

내부에서 주입 받는 것 보다는 외부에서 객체를 교체해주는 방법이 더욱 유연하다. 

 

 

객체 내부에서 다른 객체를 생성하는 것은 강한결합도를 가지는 구조이다. 

A 객체에서 B 객체를 직접 생성하면 B객체를 다른 것으로 바꾸려 할 때 A 객체의 수정도 일어나므로 결합도가 강하다고 본다. 

 

반대로 외부에서 생성된 객체를 인터페이스를 통해 넘겨받으면  결합도를 낮출 수 있고 런타임 때 의존관계가 결정되어 유연하다. 

 

https://devlog-wjdrbs96.tistory.com/165

 

 

 

이러한 형태로 생성자 외부 주입을 받는다. 

 

 

 

하지만 대신 이러한 형태로 해주면 자동으로 컨스트럭터를 통해 주입을 받을 수 있다. 

 

 

위와 같이 컨트롤러 를 작성한다.

그러면 post 요청으로 오는 데이터를 가지고 Notice 객체를 만들고 JPARepository 를 상속하고 외부 주입을 받은 noticeRepository 객체로 저장이 되게된다. 

 

 

 

 

 

localhost:8083/h2-console 로 접속을 하면 h2 인메모리 디비의 콘솔을 볼 수 있다. 

 

JDBC URL : 부분에 application.yml 의 datasource.url 의 주소를 써준다. 

 

post request 를 날려주면 

 

아래와 같이 h2 디비에 들어가는 것을 확인할 수 있다. 

 

 

 

 

' > Spring Boot JPA' 카테고리의 다른 글

Spring Boot JPA #6  (0) 2022.01.09
Spring boot JPA #4  (0) 2021.11.28
Spring Boot JPA #3  (0) 2021.11.21
Spring Boot JPA #2  (0) 2021.11.21
Spring Boot JPA #1  (0) 2021.11.21