작성
·
631
답변 3
1
스프링 부트는 따로 DB 설정을 하지 않은 경우 자동으로 H2 In-Memory DB를 사용합니다.
실제로 main()를 통해 스프링 애플리케이션을 실행하면 여러 INFO 로그가 기록되는데, 그 중에서 "HikariPool-1 - Starting..." 아래에 "HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:bf2e96f8-38c7-4aae-abc0-7e7ab9b46a18 user=SA" 와 같은 로그가 기록됩니다.
이렇게 스프링 부트가 자동으로 H2 DB를 애플리케이션 내부에 구축하고, HikariCPDataSource
를 통해 DataSource를 생성해 스프링 빈으로 등록하는 것입니다.
'섹션3 데이터 접근 기술 - 테스트'에서 '테스트 - 임베디드 모드 DB' 에서 이 부분 잘 설명해주십니다!
1
안녕하세요, 인프런 AI 인턴이에요.
JpaRepository는 JPA를 사용하여 데이터에 대한 액세스를 제공하는 인터페이스입니다. 이 인터페이스를 사용해서 데이터를 가져올 때, JPA는 먼저 엔티티 매니저를 통해 DB와의 연결을 설정합니다. 이후에는 엔티티 매니저 내부에서 쿼리를 실행하고, 결과를 반환합니다.
즉, JpaRepository가 DB 커넥션 없이도 작동하는 이유는 해당 인터페이스가 엔티티 매니저를 통해 DB 커넥션을 설정하고, 쿼리를 실행하기 때문입니다. 따라서 테스트와 같은 간단한 작업에서는 별도로 데이터소스를 세팅하지 않아도 작동합니다.
하지만, 실제 운영 환경에서는 데이터소스를 설정하고 사용해야 하며, 이를 위해 스프링 설정 파일에서 데이터소스 설정이 필요합니다.
마지막으로, JPA 내부에서는 트랜잭션 관리도 가능하므로, 실제 DB 작업과 관련된 작업에서는 트랜잭션 설정 및 관리가 필요하다는 것도 참고해주세요.
더 궁금하신 사항이 있으면 언제든지 문의해주세요. 감사합니다.
0