Spring(Web)

Spring 완전정복 6 - 데이터베이스 연동, 통합 테스트

kjy0349 2022. 4. 22. 21:31

강의에서는, H2 데이터베이스를 이용해 멤버 데이터들을 저장하는것을 알려주었다.

실제 구현부 (JdbcMemoryRepository)를 볼 때에는, 학교에서 실습했었던 oracle db가 생각났었던.. 강의였다.

 

1. 실행 할 쿼리문 정의

2. getConnection 메소드를 이용해 데이터베이스와 연결 생성.

3. 커넥션에서 쿼리문을 이용해 PreaparedStatement 생성.

4. 실행 할 쿼리문에 데이터를 넘겨줌.

 

과 같은 형태로 데이터베이스와 통신하는 방법이다.

다만, 이와같이 데이터베이스와 통신 할 때에는 예외를 throw하는 경우가 많으므로, 항상 try catch 문과 같이 예외를 처리 할 수 있는 키워드들을 사용해 처리해줘야 한다.

 

마지막에 통신이 끝난 후 연결을 해제해줘야 서버에 과부하가 걸리지 않는다.

 

이렇게 새롭게 JdbcMemberRepository를 생성해 저장소를 대체했는데도 불구하고, Interface를 기반으로 구현해 사용했으므로 저장소 교체는 이전에 만들어두었던 SpringConfig의 내용을 수정하는것만으로도 적용시킬 수 있었다.(다형성)

 

 

+++ 추가적으로, 이전에 만들었던 테스트 코드들은 스프링 컨테이너와 함께 돌려지는것이 아닌, 내부 메모리 저장값들만을 가지고 테스트가 진행되는 코드들이였다. 이전에 사용했던 테스트 코드들을 가지고 있는 클래스에 @SpringBootTest 어노테이션을 추가하는것만으로도 스프링 컨테이너와 같이 테스트를 진행 할 수 있다. 다만, 서비스나 테스트해야 할 메소드들이 많아질수록 스프링 서버를 올리고 테스트 하는것은 많은 시간이 소요되므로... 통합 테스트보다는 이전에 썼던 메모리 테스트만으로도 제대로 동작하는지 알 수 있어야 좋은 테스트 코드인것을 알게 되었다.