[10분 테코톡] 폰트의 Jdbc Template vs Jdbc Client
- JDBC는 데이터베이스 접근 시 커넥션 관리, 쿼리 실행, 결과 매핑, 예외 처리 등 반복적인 상용구 코드를 요구했습니다. 🔄
- 스프링은 JDBC 코드의 고정 부분과 변하는 부분을 분리하여, 고정 부분을 추상화하고 변하는 부분만 주입받는 템플릿 콜백 패턴을 통해 JdbcTemplate을 만들었습니다. 🏗️
- JdbcTemplate은 Optional 반환 타입을 지원하지 않아 사용자들이 불편함을 느꼈고, queryForOptional 같은 메서드 추가를 요구했습니다. ❓
- 스프링 개발자들은 JdbcTemplate에 Optional 지원을 추가하는 것에 대해 API 복잡성 증가, JdbcTemplate의 본래 목적과 불일치, 대체 방법 존재 등을 이유로 초기에는 반대했습니다. 🚫
- JdbcTemplate의 개선 대신 새로운 클래스를 제공하는 방향으로 JdbcClient가 탄생했으며, 이는 사용자들의 오랜 불편함을 해소하기 위함입니다. ✨
- JdbcClient는 체이닝 방식의 선언형 API, Named Parameter 지원, 자동 반환 타입 매핑, Optional 및 List, Stream 반환 지원 등 현대적인 사용성을 제공하여 가독성과 편의성을 크게 향상시켰습니다. 🚀
- JdbcClient는 JPA가 적합하지 않은 특정 상황(성능, 복잡한 쿼리, 경량 데이터 액세스, 기존 코드베이스)에서 JdbcTemplate 사용자들의 현실적인 고민을 해결하고, 스프링이 사용자 의견을 경청하며 발전하는 플랫폼임을 보여주는 사례입니다. 👂