상황
- h2 데이터베이스 설치 후, 테스트 코드 작성시 테스트 성공하고, JPA가 정상 작동 및 쿼리까지 나가는 것을 확인했는데, H2 database에 테이블이 만들어져있지 않은 상황
원인 및 해결
- properties.yml 파일에 오타가 있었다.
- datasource라고 써야 할 부분을 database로 씀
- yml 파일 작성시 띄어쓰기(2칸)을 지키지 않아도 같은 문제 발생한다고 한다.
spring:
application.name: data-jpa
database:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
spring:
application.name: data-jpa
datasource:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
즉, SpringBoot는 datasource를 지정하지 않으면, 임베디드 데이터베이스를 사용하기 때문에, 테스트는 정상 작동했지만 설정파일에 지정한 db에는 연결되지 않았던 것.
실제 개발은 데이터베이스를 연동하고, 테스트 시에는 임베디드 DB로 분리해서 사용할 수도 있다.