[F-Lab 모각코 챌린지] 44일차 - JDBC 의 Connection(1)
F-Lab 모각코 챌린지 44일차 - JDBC 코드 까보기. 오늘은 기본적인 JDBC 구조와 Connection 클래스 파일을 열어 보았습니다. Connection 은 JPA 에서도 사용하는 중요한 객체로, 여러가지 함수를 지원합니다.
![[F-Lab 모각코 챌린지] 44일차 - JDBC 의 Connection(1)](/content/images/size/w1200/2023/07/f_lab_mogacko-5.png)
설명
JDBC 는 자바의 기본 스펙 중 하나이다
![](https://blog.pollra.com/content/images/2023/07/-----2023-07-10----9.21.33.png)
Database 에 연결하기 위해 사용하며 각 드라이버는 직접 구현하거나 의존성을 받아서 사용할 수 있다.
구조
JDBC 에서 중요한 요소는 많지만, 이 글에서는 차근차근 학습하기 위해 아래의 순서대로 확인 해 볼 예정이다.
- Wrapper
- SQLException
- Driver 관련
- Type 관련
- SQL 권한 관련
Wrapper
![](https://blog.pollra.com/content/images/2023/07/-----2023-07-10----9.25.19.png)
Wrapper 는 프록시를 위해 존재하는 클래스이다
하위 요소들로는 이미지에서 알 수 있듯 여러 요소들이 존재한다
- Statement: 정적 SQL 문을 실행하고 생성된 결과를 반환하는 데 사용되는 인터페이스
- DatabaseMetaData: 데이터베이스에 대한 종합적인 메타 데이터. 주로 드라이버 제공자들에 의해 구현되며, 이를 통해 사용자들은 JDBC 기반 드라이버와 함께 사용되는 데이터베이스 의 기능을 알 수 있다.
- ParameterMetaData: PreparedStatement 객체의 각 파라미터 마커에 대한 정보를 가져오는데에 사용할 수 있는 객체. 일부 쿼리와 드라이버 구현에서는 ParameterMetaData 객체에서 반환될 데이터가 PreparedStatement 가 실행되기 전 까지 없을 수 있다.
- Connection: 특정 데이터베이스와의 연결(세션). SQL 문이 실행되고 연결 컨텍스트 내에서 결과가 반환된다. 이 객체는 해당 테이블, 지원되는 SQL 문법, 저장 프로시저, 연결 기능 등의 정보를 제공하는 getMetaData() 메서드를 지원한다.
- ResultSetMetaData: ResultSet 에 있는 열의 유형 및 속성 정보를 가져올 때 사용할 수 있는 인터페이스.
- ResultSet: 데이터베이스 질의문을 실행하여 생성되는 데이터베이스 결과 집합을 나타내는 데이터 테이블. 여러 데이터를 읽어올 수 있는 메서드를 지원하며 추가적인 메타데이터(위의 ResultSetMetaData 를 통해)를 제공받을 수 있다.
여기서 오늘 정리 할 항목은 Connection 이며, 실제 클래스를 기준으로 살펴보자.
Connection 인터페이스는 JPA 에서 내부적으로 사용되는 인터페이스 이다
단일 세션을 나타내며 EntityManager 는 내부적으로 이러한 연결을 관리한다.
먼저 Connection 인터페이스에 정의되어있는 함수들을 살펴보자.
/* 쿼리 생성을 위한 함수들 */
// 매개변수가 없는 쿼리를 실행 할 때 사용되는 함수. 동일한 SQL 문이 여러 번 실행되는 경우 PreparedStatement 를 사용하는 것이 더 효율적일 수 있다.
Statement createStatement() throws SQLException;
// 매개변수가 존재하는 SQL 문을 DB 로 보내기 위한 PreparedStatement 객체 생성
PreparedStatement prepareStatement(String sql) throws SQLException;
// 저장 프로시저 호출
CallableStatement prepareCall(String sql) throws SQLException;
// 주어진 SQL 문을 시스템의 기본 SQL 문법으로 변환한다.
String nativeSQL(String sql) throws SQLException;
기본적으로 Connection 이 만들어지면 자동적으로 auto commit 모드가 활성화 된다.
2편 계속...