도도한 개발자

[TIL] 2023/08/23 본문

TIL

[TIL] 2023/08/23

Kiara Kim 2023. 8. 23. 23:50

🐈‍⬛ 오늘 공부한 내용

  • 스프링 DB 2편 - 스프링 jdbcTemplate, JPA, 스프링 JPA
  • h2 서버도 안띄우고 '왜 나만 안돼..' 하지 말자

 🐾 느낀 점 & 배운 점

음~ 계획 달성 실패!

역시 하루에 14시간짜리 강의를 다 듣는건 무리였다. 14시간이 무야 반도 못 들음. 나름 선택과 집중을 한다고 myBatis 부분은 건너뛰었는데 그래도 오래걸리는구만. JPA를 뭔지도 모르고 프로젝트에 일단 도입하고 나서 이제서야 조금 공부하고 있는데 '아하~' 하면서 깨닫는 순간이 많이 찾아오는 것 같다. 

 

스프링이 제공하는 @Transactional 어노테이션은 로직이 성공적으로 수행되면 커밋하도록 동작한다. 그런데 이 어노테이션을 테스트에서 사용하면 스프링은 테스트를 트랜잭션 안에서 실행하고테스트가 끝나면 트랜잭션을 자동으로 롤백시켜 버린다. wow

 

한편, 테스트만을 위한 데이터베이스를 설치하고 운영하는 건 귀찮은 일이다. 단순히 테스트를 검증할 용도로만 사용하기 때문에 테스트가 끝나면 데이터베이스의 데이터를 모두 삭제해도 된다. 그 뿐인가, 테스트가 끝나면 데이터베이스 자체를 제거해도 된다

 

'H2 데이터베이스를 임베디드 모드로 사용할 수 있다'는 말을 레벨2때 얼핏 들은 것 같다. 그땐 이게 무슨 말인가 했더니 자바로 개발된 h2 DB는 JVM안에서 메모리 모드로 동작하는 기능을 제공한다고 한다. 그래서 애플리케이션을 실행할 때 h2 DB도 해당 JVM 메모리에 포함해서 함께 실행할 수 있는데, DB를 애플리케이션에 내장해서 함께 실행한다고 해서 임베디드 모드라고 한다. 스프링 부트는 데이터베이스에 대한 별다른 설정이 없으면 임베디드 데이터베이스를 사용한다

 

위 내용을 미리 숙지했더라면 재빠르게 고칠 수 있었던 오류

dialect? 어디서 들어봤는데, 무슨 방언인가 그랬다. h2, mySql같이 DB를 말하는 것 같은데.. 라고 생각하면서 지금 h2를 쓰고 있으니까 현재 다음과 같이 설정되어 있는 application.properties 파일에

spring.profiles.active=local
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa

아래의 설정을 넣어보면 되겠다 싶었다.

spring.jpa.database=h2

그랬더니 다음과 같은 오류 발생.

 엥? 누구세요..?ㅠㅠ

강의 커뮤니티를 돌아봐도 구글링을 해봐도 원하는 답이 나오지 않아서 '혹시 내가 앞 커리큘럼인 myBatis를 건뛰해서 그런가? 그때 뭐 따로 설정한 게 있나?' 싶어서 강의자료를 찾아봤는데 아무래도 그건 아닌 듯 싶었다.

 

그래서 해결방법을 고심하다가 오늘 배운 내용을 천천히 복습하기로 했다. 위에서 정리한 것처럼

"스프링 부트는 데이터베이스에 대한 별다른 설정이 없으면 임베디드 데이터베이스를 사용한다." 

난 이미 application.properties에 별다른 설정을 해놨고 그럼 h2 DB를 써야하는데 아이 참ㅎㅎ 서버를 안띄웠네^^

 

추가로 작성한 프로퍼티는 필요없을 것 같아 지운 후 Application을 실행해봤더니

짜잔~ 너무 잘나오는 거..

 

그러면 그 별다른 설정이 없으면 어떻게 나올까? 궁금해서 

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa

 이 부분을 주석처리하고 돌려보았다.

어머나 세상에 마상에.. 개발 DB 재밌당. 

위에 item 목록 두개가 있는 이유는 애플리케이션 실행 시 초기값 두개를 세팅하도록 설정했기 때문에 이렇게 나오는 게 맞다.

 

아무튼, 오늘 목표한 범위는 달성하지 못했지만 

 스프링 부트는 데이터베이스에 대한 별다른 설정이 없으면 임베디드 데이터베이스를 사용한다

라는 말을 경험을 통해 이해할 수 있게 되어 만족스럽다.

 

내일은 강의 마저 듣고 프로젝트 들여다 봐야지

 

💭 감정회고

요즘 4시만 되면 낮잠을 꼭 자야한다. 어린이집이야 뭐야.. 안그러면 눈이 뒤집힐 것 같은데 그래도 한시간정도 자고 나면 컨디션이 돌아와서 뭔가 좋기도 하고 신기하기도 하다. 사람은 왜 자야 할까? 뇌는 왜 쉬어야 할까? 눈은 왜 쉬어야 할까? 쉬는게 뭘까? 이런 생각하다가 궁금해서 유튜브를 틀었다. 쇼츠가 재밌어 보여서 쇼츠 하나 보고 검색해야지 하다가 쇼츠만 두시간 보고 껐다... 쇼츠는 무서웡~ 근데 이 기억이 글 쓸 때 생각난 것도 레전드.

 

'TIL' 카테고리의 다른 글

[TIL] 2023/08/25  (0) 2023.08.25
[TIL] 2023/08/24  (1) 2023.08.24
[TIL] 2023/08/22  (2) 2023.08.22
[TIL] 2023/08/21  (2) 2023.08.21
[TIL] 2023/08/20  (2) 2023.08.20