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 |