본문 바로가기
JAVA

[JAVA] Chapter 17. JDBC

by varcode 2023. 7. 23.

① JDBC
JDBC(Java DataBase Connectivity)
는 자바 프로그램에서 관계형 데이터베이스와 연결하여 데이터를 처리하기 위한 자바 API이다. JDBC를 사용하여 데이터베이스를 연동하면 데이터베이스에서 데이터를 읽거나 쓸 수 있으며, SQL 쿼리를 실행할 수도 있다.

JDBC API는 자바 애플리케이션과 데이터베이스 간의 표준 인터페이스를 제공한다. API를 사용하여 JDBC 드라이버를 로드하고, 데이터베이스와의 연결을 설정하고, SQL 쿼리를 실행하고 결과를 처리하는 등의 작업을 수행할 수 있다.

 

 

② DBCP
DBCP(DataBase Connection Pool)
는 데이터베이스 커넥션을 관리하는 라이브러리 중 하나이다. 웹 애플리케이션과 같이 다중 사용자가 동시에 데이터베이스에 접근하면서 커넥션을 생성하는 경우, 커넥션 생성과 종료 과정에서 발생하는 부하로 인해 서버의 성능에 악영향을 줄 수 있다. 이러한 문제를 해결하기 위해 DBCP는 미리 설정된 커넥션 풀에서 커넥션을 대여해 사용하고, 반환하는 방식으로 커넥션 관리를 수행한다. DBCP Apache Commons DBCP와 같은 라이브러리로 제공되며, JDBC와 함께 사용된다.

 

 

③ Row mapping
프로그래밍 언어는 일반적으로 숫자/문자 두 가지 데이터 타입을 가지고, 데이터베이스는 숫자/문자/날짜 세 가지 데이터 타입을 가진다. 따라서 데이터베이스에서 프로그래밍 쪽으로 값을 가져오면, 반드시 프로그래밍 언어에 맞는 타입으로 바꾼 후에 저장해야 한다.

 

 

④ JDBC Programming 단계
JDBC
를 사용하여 데이터베이스 프로그래밍을 할 때, 일반적으로 아래와 같은 단계를 따른다.

 

Step 1. 패키지 import
JDBC
인터페이스 및 클래스를 위한 java.sql 패키지를 import 한다.

 

Step 2. JDBC 드라이버 로딩
Class.forName()
메서드를 사용하여 드라이버 클래스를 로딩한다. 데이터베이스 제조사에서 제공하는 JDBC 드라이버를 다운로드해서 사용할 수 있으며 로딩할 때 JDBC 드라이버가 해당 폴더에 설치되어 있어야 한다.

 

Step 3. 데이터베이스 연결 생성
DriverManager.getConnection()
메서드를 사용하여 데이터베이스와 연결을 생성한다. 연결 정보로는 데이터베이스 URL, 계정 정보, 암호 등이 필요하다.

 

Step 4. Statement 생성
Connection
객체의 메서드를 사용하여 Statement 객체를 생성한다. Statement 객체는 SQL 쿼리를 실행하기 위한 객체이다. createStatement() 메서드는 ?가 없는 완전한 query 문을 작성할 때, prepareStatement() 메서드는 SQL 문의 특정 값을 ?로 기술하여 DB 서버에 미리 컴파일하는 경우에 사용할 수 있다. prepareStatement() 메서드는 실행 전에 setXXX()로 값을 설정하며(XXX data type) SQL 문을 반복적으로 사용하는 경우에 유용하다.

 

Step 5. SQL 실행
Statement
객체의 executeQuery() 또는 executeUpdate() 메서드를 사용하여 SQL 쿼리를 실행한다. executeQuery() SELECT 문을 실행할 때 사용하고, executeUpdate() INSERT, UPDATE, DELETE와 같은 SQL 문을 실행할 때 사용한다.

Step 6. 결과 처리
SELECT
쿼리의 결과를 처리하기 위해서는 ResultSet 객체를 사용한다. ResultSet 객체의 next() 메서드를 사용하여 다음 레코드로 이동하면서 결과를 가져올 수 있다. 프로그래밍 언어의 String 타입으로 변환하는 getString() 메서드를 사용할 수 있다.

 

Step 7. 리소스 해제
ResultSet, Statement, Connection
등의 리소스는 사용 후 반드시 해제해야 한다. finally 블록에서 close() 메서드를 사용하여 리소스를 해제한다. 생성된 인스턴스의 역순(ResultSet, Statement, Connection)으로 close 한다.

 finally에서 종료하다가도 예외가 발생하면 어떻게 할까? => finally 밑에도 catch로 예외를 따로 잡아준다.

'JAVA' 카테고리의 다른 글

[JAVA] Chapter 16. Collection Framework (2)  (0) 2023.07.22
[JAVA] Chapter 16. Collection Framework (1)  (0) 2023.07.21
[JAVA] Chapter 15. Wrapper Class  (0) 2023.07.20
[JAVA] Chapter 14. VO Class  (0) 2023.07.19
[JAVA] Chapter 13. Exception Handling  (0) 2023.07.18

댓글