JDBC & JDBC Template

이재현·2024년 8월 16일

Spring

목록 보기
3/13

❤️JDBC

Java Database Connectivity, 즉 JDBC는 자바에서 DB와 연결하여 데이터를 조회 및 조작할 수 있게 해주는 표준 API이다.

다양한 관계형 데이터베이스에 코드의 변경없이 접근할 수 있게 해주는 역할을 한다.

데이터베이스와의 통신을 위한 기본적인 기능을 지원하고, SQL을 실행하고 결과를 처리하는 데 필요한 모든 작업들을 처리한다.

🧡 JDBC 구성요소

JDBC Driver

  • Java 어플리케이션과 특정 데이터베이스를 연결해주는 역할, 각 데이터베이스에서 제공을 한다.

DriverManager

  • JDBC 드라이버를 관리하고, 어플리케이션과 DB의 연결을 돕는 클래스이다.

Connection

  • 데이터베이스와 연결을 나타내는 객체, DriverManager.getConnection() 을 통해 설정

Statement

  • SQL 쿼리를 실행하기 위한 객체, Statement, PreparedStatement, CallableStatement 3가지를 제공한다.
    • Statement: 기본 SQL 쿼리를 실행하는데 사용
    • PreparedStatement: 매개변수를 사용하여 동적 쿼리를 실행하는데 사용
    • CallableStatement: 데이터베이스의 저장 procedure를 호출하는데 사용

ResultSet

  • SQL 쿼리의 결과를 저장하는 객체, 데이터베이스로부터 가져온 데이터를 행 단위로 처리할 수 있다.



❤️ JDBC Template

Spring Framework에서 제공하는 JDBC API를 더 쉽게 사용할 수 있도록 도와주는 유틸리티 클래스이다.

JDBC를 사용할 때 발생하는 반복적인 작업들을 간소화하여 데이터베이스 접근을 효율적으로 처리할 수 있게 해준다.

  • 반복적인 작업: 데이터베이스 연결 생성 및 종료, SQL 쿼리 작성 및 실행, ResultSet 처리, 예외 처리, 자원 해제 (Connection, Statement, ResultSet)

결과적으로 코드의 복잡성을 줄이고, 간결하게 JDBC 기반의 데이터 액세스를 구현할 수 있게 된다.

🧡 JDBC Template 장단점

💛 장점

반복 코드 제거

  • 데이터베이스 연결, 쿼리 실행, 예외 처리, 자원 해제 등의 반복적인 코드를 줄일 수 있다.

간단한 API

  • 간단한 메서드 호출만으로 대부분의 데이터베이스 작업을 수행할 수 있다.

예외 처리 통합

  • Spring의 DataAccessException 계층을 통해 다양한 SQL 예외를 한 가지 예외로 일관되게 처리할 수 있다.

명확한 코드 구조

  • 코드가 간결해지며, 비즈니스 로직에 더 집중할 수 있다.

💛 단점

복잡한 객체 관계 처리 부족

  • Hibernate나 JPA와 같은 ORM은 객체 간의 복잡한 관계를 자동으로 매핑해주지만, JdbcTemplate은 이러한 기능이 부족하기에, 객체 간의 연관 관계를 직접 처리해야 하는 불편함이 있다.

SQL 직접 작성

  • ORM과 달리 SQL 쿼리를 직접 작성해야 하므로, 복잡한 쿼리 관리에 대한 부담이 있을 수 있다.

🧡 JDBC Template 주요 기능

CRUD 작업

  • queryForObject(): 단일 결과를 반환하는 SELECT 쿼리 처리
  • query(): 여러 행을 반환하는 SELECT 쿼리 처리
  • update(): INSERT, UPDATE, DELETE 쿼리 처리

배치 작업

  • batchUpdate(): 대량의 데이터를 한 번에 처리하는 배치 작업 지원

데이터 매핑

  • RowMapper 인터페이스를 사용하여 결과 집합(ResultSet)을 객체로 변환 가능

예외 처리

  • Spring의 DataAccessException 계층으로 JDBC 예외를 추상화하여, SQL 관련 오류를 일관되게 처리

0개의 댓글