JDBC(Java DataBase Connectivity)
- 자바 표준 API(응용 프로그래밍 인터페이스)
- 데이터베이스 관리 시스템(DBMS)과 통신하여 데이터 CRUD가 가능케함
JDBC 주요특징
-
표준 API이다. 대부분의 RDBMS에 대한 드라이버가 제공되어 일관된 방식으로 상호 작용할 수 있다. -> 데이터베이스 종류가 바뀌어도 쿼리문이 실행됨
-
데이터 베이스 연결
-
SQL 쿼리 실행
-
Prepared Statement : JDBC에서 사용되는 객체 중 하나이다.SQL쿼리를 실행하기 전에 미리 컴파일하여 데이터베이스에 보낼때 사용된다.
- 컴파일 단계 : SQL문장을 데이터ㅔ이스에 보내기 전에 미리 컴파일 한다. 미리 SQL 문장의 구문 오류를 미리 확인할 수 있게 해준다.
- 파라미터화 : Prepared Statement는 SQL 쿼리에 파라미터를 넣을 수 있다. 동적으로 쿼리의 파라미터 값을 변경하여 여러번 실행할 수 있도록 한다.
- 재사용 가능 : 한번 컴파일되면 Prepared Statement는 반복적으로 실행될 수 있다. 동일한 쿼리를 여러번 실행해야 할 때 유용하다.
- 보안 강화 : SQL Injection 공격을 예방한다.
-
트랜잭션 관리 : JDBC는 트랜잭션을 관리하고, 커밋 또는 롤백하는 등의 작업을 수행할 수 있다.
SQL Injection : 악의적인 사용자가 애플리케이션에서 입력 데이터를 이용하여 SQL 쿼리 조작하고 데이터베이스에 무단 접근하거나 데이터를 변조하는 공격.
Persistence Framework
-
JDBC의 복잡함을 개선한 프레임워크
-
간단한 작업만으로 Database와 연동되는 시스템을 개발
-
내부적으로 JDBC API를 이용한다. -> preparedStatement
-
SQL Mapper, ORM 두가지로 나눌 수 있다.
영속성 : 데이터를 생성한 프로그램의 실행이 종료되더라도 데이터가 사라지지 않는다.
JDBC, SQL Mapper, ORM의 공통적인 특징이다.
SQL Mapper
=>직접 작성한 SQL문의 실행결과 와 객체 필드 매핑하여 데이터를 객체화 한다.
Spring JDBC Template
=> Spring Framework에서 제공하는 JDBC 작업을 단순화하고 개선한 유틸리티 클래스
- 보일러 플레이트 코드 최소화(무의미한 반복 코드 최소화)
- 예외 처리 간소화 (JDBCTemplate은 SQLException을 Spring의 DataAccessException으로 변환 처리한다.)
- 파라미터 매핑과 결과 매핑의 간편함 : JDBCTemplate은 PreparedStatement를 통해 파라미터 매핑을 손쉽게 할 수 있다.
- 트랜잭션 관리 : JdbcTemplate은 Spring의 트랜잭션 매니저와 통합되어 트랜잭션 관리를 지원한다.
- 편리한 예외 처리 , 로깅
- 프레임워크와의 통합 : Spring 다른 기능들과 자연스럽게 통합된다.