저고데

[Spring Boot]5. 다양한 데이터베이스와 연결하기 본문

Spring Boot

[Spring Boot]5. 다양한 데이터베이스와 연결하기

진철 2023. 12. 27. 14:21
728x90
반응형

데이터는 고려할 게 매우 많은 존재이다.

더불어, 데이터가 없는 어플리케이션은 의미가 없을 정도로 데이터의 존재 자체는 매우 중요하다.

스프링 부트에서 지향하는 데이터 관리는 "데이터의 특수한 속성은 유지하면서 데이터의 엑세스는 친숙하고 일관된 스프링 기반 프로그래밍 모델을 제공하는 것"이다.

따라서 간단하고 강력한 데이터 엑세스 방법을 제공한다.

 

Entity를 정의하자

대부분의 경우, 도메인 엔티티가 존재한다.

유용한 데이터는 여러 요소가 긴밀하게 결합되어 의미 있는 전체를 구성한다.

따라서 첫 단계는 적용 가능한 데이터를 처리하는데 사용할 도메인 클래스를 정의하는 것이다.

도메인 클래스는 연관성과 중요성이 다른 데이터와 독립적인 기본적인 도메인 엔티티이다.

즉, 다른 엔티티와 연결이 되지 않아도 독립적으로 존재하고 그 자체만으로도 의미가 있다는 것이다.

도메인 클래스를 정의했다면, 데이터가 얼마나 사용될 것인지 범위와 클라이언트가 사용하는 API 수준에 따라서 데이터베이스의 추상화 수준을 정해야한다.

이 때, Template와 Repository 두 가지 선택지가 있는데, 우선 Template에 대해서 먼저 알아보자

 

Template. 내가 아는 그 템플릿인가?

스프링 부트에서는 데이터 소스에 Operations 타입의 인터페이스를 정의한다.

이는 최선의 유연성을 위해 제공되는 인터페이스로 사용하는 DB의 종류의 따라서 MongoOperations, RedisOperations 등 여러 가지가 존재한다.

Template은 일종의 서비스 제공 인터페이스이다.

바로 사용할 수 있는 장점이 있지만, 매번 반복되는 단계를 거쳐야하는 단점이 존재한다.

따라서, 일반적인 패턴이 계속 반복된다면 Template보다는 Repository를 사용하는 것이 유리하다고 할 수 있다.

 

Repository. 저장소를 알아보자

스프링 데이터가 Repository 인터페이스를 정의하면, 그로부터 모든 유형의 스프링 데이터 Repository가 파생된다.

JPARepository를 사용하면 사용하는 DB 종류에 따라서, MongoRepository, RedisRepository가 파생되고, CrudRepository에서 용도에 따라서 ReactiveCrudRepository, PagingAndSortingRepository 등이 파생된다.

 

위의 Template과 Repository의 사용법 예시는 Github에 기록하였으니 이를 참고하자.

 

728x90
반응형