Spring - JDBC(Java Database Connectivity)

박민수·2023년 11월 14일

Spring

목록 보기
18/46
post-thumbnail

JDBC(Java Database Connectivity)란?

JDBC(Java Database Connectivity)는 자바 프로그램과 데이터베이스 간의 표준화된 연결을 제공하는 자바 API이다. 이를 통해 자바 애플리케이션은 데이터베이스에 쿼리를 실행하고 데이터를 검색, 삽입, 갱신, 삭제할 수 있다. JDBC는 데이터베이스 종류에 관계없이 표준 SQL을 사용하여 데이터베이스와 상호 작용할 수 있도록 지원한다.

JDBC를 통한 데이터베이스 액세스

JDBC를 사용하면 데이터베이스와의 연결을 설정하고 SQL 쿼리를 실행하는 일련의 과정을 수행할 수 있다. 일반적으로 다음과 같은 단계로 JDBC를 사용하여 데이터베이스에 액세스한다.

  • 드라이버 로드: 먼저 데이터베이스 공급업체가 제공하는 JDBC 드라이버를 로드해야 한다. 이 드라이버는 자바 애플리케이션과 데이터베이스 간의 통신을 담당한다.

  • 데이터베이스 연결 설정: DriverManager 클래스를 사용하여 데이터베이스에 연결한다. 연결 문자열을 통해 데이터베이스의 위치와 인증 정보를 지정한다.

  • SQL 쿼리 실행: Statement 또는 PreparedStatement 인터페이스를 사용하여 SQL 쿼리를 실행한다. Statement를 사용하면 정적 SQL 쿼리를 실행하고, PreparedStatement를 사용하면 동적으로 생성된 SQL 쿼리를 실행할 수 있다.

  • 결과 처리: 실행된 SQL 쿼리의 결과를 처리한다. SELECT 쿼리의 경우 결과 집합을 반복하여 데이터를 가져오고, INSERT, UPDATE, DELETE 쿼리의 경우 영향을 받은 행의 수를 확인한다.

  • 연결 종료: 데이터베이스와의 연결을 종료하고 자원을 반환한다.

JDBC를 사용하면 자바 애플리케이션에서 다양한 데이터베이스와 통신할 수 있으며, 데이터베이스와의 상호 작용을 효율적으로 관리할 수 있다. 그러나 JDBC를 직접 사용할 경우에는 코드가 복잡해질 수 있고, 보안 문제나 예외 처리에 대한 처리를 직접 해주어야 한다.

JDBC Template

스프링 프레임워크에서는 JDBC를 간소화하고 개발자가 보다 편리하게 데이터베이스와 상호 작용할 수 있도록 JDBC Template을 제공한다. JDBC Template은 JDBC의 복잡한 작업을 감추고 간단한 메서드를 제공하여 개발자가 JDBC 코드를 작성하는 번거로움을 줄여준다. 또한 JDBC Template은 자동으로 예외 처리와 리소스 관리를 수행하여 개발자가 직접 해주어야 하는 번거로운 작업을 줄여준다.

  • 간결한 코드: JDBC Template은 JDBC의 일반적인 작업을 추상화하고 간소화하여 개발자가 반복적이고 장황한 JDBC 코드를 작성하지 않고도 데이터베이스와의 상호 작용을 수행할 수 있다. 이를 통해 코드의 가독성이 향상되고 개발 생산성이 증가한다.

  • 예외 처리와 리소스 관리: JDBC Template은 자동으로 JDBC 예외 처리를 관리하고, 데이터베이스 연결과 리소스를 안전하게 해제한다. 이로 인해 개발자는 데이터베이스 관련 예외 처리와 리소스 관리에 대해 걱정할 필요가 없어진다.

  • SQL 작성의 편의성: JDBC Template은 SQL 쿼리를 실행하는 간단한 방법을 제공한다. 개발자는 SQL 쿼리를 문자열로 직접 작성할 수 있으며, 필요에 따라 파라미터 바인딩과 결과 매핑을 수행할 수 있다.

  • 트랜잭션 관리: JDBC Template은 스프링의 트랜잭션 관리 기능과 함께 사용될 수 있다. 개발자는 선언적 트랜잭션 설정 또는 프로그래밍 방식의 트랜잭션 관리를 통해 데이터베이스 작업의 일관성과 안전성을 보장할 수 있다.

  • 유연성과 확장성: JDBC Template은 스프링의 다른 기능과 통합되어 사용될 수 있으며, 다양한 데이터베이스 기술과 호환된다. 또한 커스텀 쿼리 매퍼나 결과 매핑 전략을 구현하여 개발자의 요구에 맞게 확장할 수 있다.


참조
https://ko.wikipedia.org/wiki/JDBC

profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글