개발을 하다가 생긴 궁금증입니다.
가짜 데이터 주입과 쿼리 실행시 (저는 약 100개 정도 주입하는 로직을 사용했습니다.)에는 MongoTemplete
,
CRUD는 MongoRepository
를 사용했는데요ㅡ 왜 이렇게 개발을 하는지에 대한 고찰입니다.
MongoTemplate
과 MongoRepository
는 모두 Spring Data MongoDB를 사용하여 데이터베이스와 상호작용하는 방법입니다. 그러나 둘 사이에는 특정 상황에서 사용하기 적합한 차이점이 있습니다. 선택 기준은 주로 필요한 작업의 복잡성과 구현해야 할 로직의 유형에 따라 달라집니다.
MongoTemplate
은 더 유연하고 세밀한 데이터베이스 작업을 수행할 수 있도록 해줍니다. 복잡한 쿼리, 다양한 유형의 데이터 조작 및 집계 등을 수행할 때 유리합니다. 하지만 이런 유연성이 필요하지 않은 경우, 코드가 더 복잡하고 길어질 수 있습니다.
MongoRepository
는 보다 선언적인 방식으로 데이터베이스 작업을 수행할 수 있게 해줍니다. 표준 CRUD 작업과 간단한 쿼리를 매우 직관적이고 간단하게 처리할 수 있도록 해주며, 복잡한 구현을 숨겨 사용하기 쉽습니다. 또한, 메소드 이름만으로 쿼리를 생성하는 기능이 포함되어 있어 개발자가 쿼리를 직접 작성할 필요를 줄여줍니다.
이 경우 Obstacle
엔티티의 CRUD 로직을 구현하기 위해 MongoRepository
를 선택한 이유는 다음과 같습니다:
간결성: CRUD 작업을 위해 MongoRepository
는 기본적인 메소드를 자동으로 제공합니다 (save
, findById
, findAll
, deleteById
등). 이로 인해 코드의 양이 줄고 가독성이 향상됩니다.
유지보수성: 선언적인 접근 방식은 코드의 복잡성을 낮추고, 결과적으로 유지보수성을 향상시킵니다. 필요한 작업이 명확하고 간단할 때, MongoRepository
는 이상적인 선택입니다.
개발 속도: 개발자는 보일러플레이트 코드를 작성하는 대신, 비즈니스 로직에 더 집중할 수 있습니다. MongoRepository
의 메소드 이름을 통한 쿼리 생성 기능은 일반적인 쿼리 작업을 빠르게 처리할 수 있도록 도와줍니다.
스프링 데이터 통합: MongoRepository
는 스프링 데이터의 일부로서, 스프링 프레임워크와의 통합이 용이합니다. 이는 데이터 접근 레이어를 보다 일관되게 관리할 수 있게 해줍니다.
결론적으로, CRUD 작업의 경우 MongoRepository
를 사용하는 것이 효율적이며, 보다 복잡한 쿼리나 세밀한 데이터 조작이 필요한 경우 MongoTemplate
을 사용하는 것이 좋습니다.