본문 바로가기
공식문서

[Spring Docs] Choosing an Approach for JDBC Database Access

by sangyunpark99 2025. 3. 26.

이번글은 공식 문서에서 소개하는 Choosing an Approach for JDBC Database Access에 대해 정리했습니다.

 

You can choose among several approaches to form the basis for your JDBC database access. In addition to three flavors of JdbcTemplate, a SimpleJdbcInsert and SimpleJdbcCall approach optimizes database metadata, and the RDBMS Object style results in a more object-oriented approach. Once you start using one of these approaches, you can still mix and match to include a feature from a different approach.

 

당신은 JDBC 데이터베이스 접근의 기반을 형성하기 위해 여러 가지 접근 방식 중에서 선택할 수 있습니다. 세 가지 형태의 JdbcTemplate 외에도, SimpleJdbcInsertSimpleJdbcCall 접근 방식은 데이터베이스 메타데이터를 최적화하며, RDBMS Object 스타일은 더 객체 지향적인 접근 방식을 제공합니다. 이러한 접근 방식 중 하나를 사용하기 시작하더라도, 다른 접근 방식의 기능을 혼합하여 포함시키는 것이 여전히 가능합니다.

 

  • JdbcTemplate is the classic and most popular Spring JDBC approach. This “lowest-level” approach and all others use a JdbcTemplate under the covers.
  • NamedParameterJdbcTemplate wraps a JdbcTemplate to provide named parameters instead of the traditional JDBC ? placeholders. This approach provides better documentation and ease of use when you have multiple parameters for an SQL statement.
  • SimpleJdbcInsert and SimpleJdbcCall optimize database metadata to limit the amount of necessary configuration. This approach simplifies coding so that you only need to provide the name of the table or procedure and a map of parameters matching the column names. This works only if the database provides adequate metadata. If the database does not provide this metadata, you have to provide explicit configuration of the parameters.
  • RDBMS objects — including MappingSqlQuery, SqlUpdate, and StoredProcedure — require you to create reusable and thread-safe objects during initialization of your data-access layer. This approach allows you to define your query string, declare parameters, and compile the query. Once you do that, execute(…​), update(…​), and findObject(…​) methods can be called multiple times with various parameter values.

 

JdbcTemplate은 고전적이며 가장 널리 사용되는 Spring JDBC 접근 방식입니다. 이 “가장 낮은 수준의” 접근 방식과 그 외 모든 다른 방식들은 내부적으로 JdbcTemplate을 사용합니다.

 

NamedParameterJdbcTemplateJdbcTemplate을 감싸며 전통적인 JDBC의 ? 플레이스홀더 대신 이름 있는 파라미터(named parameters)를 제공합니다. 이 접근 방식은 SQL 문에 여러 개의 파라미터가 있을 때 더 나은 문서화와 사용의 편리함을 제공합니다.

 

SimpleJdbcInsertSimpleJdbcCall 데이터베이스 메타데이터를 최적화하여 필요한 설정의 양을 줄입니다. 이 접근 방식은 코딩을 단순화하여 테이블이나 프로시저의 이름과 컬럼 이름과 일치하는 파라미터의 맵만 제공하면 됩니다. 이 기능은 데이터베이스가 충분한 메타데이터를 제공하는 경우에만 작동합니다. 데이터베이스가 이러한 메타데이터를 제공하지 않는 경우, 파라미터에 대한 명시적인 설정을 해주어야 합니다.

 

RDBMS 객체들 — 여기에는 MappingSqlQuery, SqlUpdate, StoredProcedure 등이 포함되며 — 데이터 접근 계층 초기화 시 재사용 가능하고 스레드에 안전한 객체를 생성해야 합니다. 이 접근 방식은 쿼리 문자열을 정의하고, 파라미터를 선언하며, 쿼리를 컴파일할 수 있도록 합니다. 이 과정을 마치면, execute(…), update(…), findObject(…) 메서드를 다양한 파라미터 값들과 함께 여러 번 호출할 수 있습니다.

RDBMS 객체는  Spring에서는 MappingSqlQuery, SqlUpdate, StoredProcedure 같은 특별한 클래스들을 제공합니다. 이 클래스들은 JDBC 객체처럼 다루게 해주는 도구입니다. (템플릿 메서드 패턴)

 

정리

Spring JDBC 접근 방식

1. JdbcTemplate

가장 기본적이고 널리 사용되는 방식

내부적으로 다른 모든 방식도 JdbcTemplate을 사용

 

2. NamedParameterJdbcTemplate

? 대신 이름 있는 파라미터 사용

SQL 문에 파라미터가 많을 때 가독성과 유지보수성이 좋음

 

3. SimpleJdbcInsert / SimpleJdbcCall

메타데이터를 이용해 필요한 설정을 최소화

테이블/프로시저 이름과 컬럼 맵만 있으면 SQL 작성 없이 사용 가능

단, DB가 충분한 메타데이터를 제공해야 함

 

4. RDBMS 객체 방식 (템플릿 메서드 패턴 기반)

MappingSqlQuery, SqlUpdate, StoredProcedure

재사용 가능하고 스레드에 안전한 객체를 미리 정의

SQL 정의 → 파라미터 선언 → 컴파일 → execute(), update(), findObject()로 반복 호출 가능

 

Spring JDBC는 다양한 접근 방식을 제공하며, 상황에 따라 혼합해서 사용할 수도 있습니다.

RDBMS 객체 방식은 템플릿 메서드 패턴을 기반으로 하여 구조적이고 재사용 가능한 코드 작성이 가능합니다.