CS/database

JDBC(Java DataBase Connectivity)

superbono 2021. 3. 12. 16:49

 

https://networkencyclopedia.com/java-database-connectivity-jdbc/

* JDBC (Java DataBase Connectivity)?

자바 프로그래밍 언어로 만들어진 클래스와 인터페이스로 이루어진 API이다.

SQL문을 실행할 수 있는 함수 호출 인터페이스이다. 

 

DBMS 종류에 독립적인 자바 프로그래밍이 가능하다.

데이터베이스가 달라지더라도 동일한 API를 사용하게 해준다. (드라이버 및 URL만 수정하면 가능하다.)

자바의 특성인 플랫폼 독립적 특성과 DBMS 에 독립적이라는 특성을 동시에 가진다. 

 

* JDBC 기능

데이터베이스에 연결 설정한다.

SQL 문장을 DBMS에 전송한다.

SQL 문장을 전송한 뒤 결과를 처리할 수 있게 해준다.

 

* JDBC 인터페이스

- Database를 만드는 업체에게 제공되는 인터페이스

  - 업체에게 제공되는 인터페이스를 각각의 DBMS업체들이 구현해놓은 것으로서 드라이버라고 한다.

 

- 프로그래머에게 제공되는 인터페이스

  - SQL 패키지가 제공하고 있는 라이브러리로서 프로그래머는 이 라이브러리를 기반으로 DB 프로그램을 작성 가능하다.

 

* JDBC API: java.sql.package

 - Driver(interface)

드라이버에 대한 정보를 가지고 있다. 모든 드라이버가 반드시 구현해야 하는 인터페이스이다. 드라이버의 버전이나 연결에 대한 정보를 알아볼 수 있는 메소드를 가지고 있다.

 

 - Connection(interface)

데이터베이스에 대한 하나의 세션(하나의 클라이언트가 서버에 요청을 하기 위해 연결을 맺은 상태)을 표현한다. DriverManager 클래스의 getConnection() 메소드를 이용하여 얻어올 수 있다. 디폴트로 setAutoCommit(true)로 설정된다. 개발자가 원하는 경우에 commit을 해주고 싶거나 트랜잭션이 아주 중요한 부분에 있어서 RollBack처리를 하고자 할 때에는 setAutoCommit(false)로 설정한다. 그러나 이 경우에는 SQL문을 수행할 때 마다 명시적으로 commit()을 호출해야 한다. 

 

 - Statement(interface)

SQL문장을 실행하고 그것에 대한 결과 값을 가져오기 위해서 사용한다.

@ public boolean execute(String sql) throws SQLExeception -> exception throw 해야한다.!

특별히 sql문을 구분하지 않고 DML과 query, DDL등을 수행할 수 있다. 결과가 ResultSet이면 true이고 결과가 DML이거나 특별한 결과가 없으면 false를 리턴한다.

@ public ResultSet executeQuery (String sql) throws SQLException -> select를 처리할 때 사용한다.

@ public int executeUpdate(String sql) throws SQLException -> 주로 DML(delete, update, insert)등의 SQL을 수행할 때 사용한다. 

 

 - PreparedStatement (interface)

동일한 SQL문장이 여러번 반복적으로 수행될 때 사용하는 객체이다.

@public ResultSet executeQuery() throws SQLException -> select를 처리할 때 사용한다.

@public int executeUpdate() throws SQLException -> 주로 DML 등의 SQL을 수행할 때 사용한다.

 

 - CallableStatement (interface)

데이터베이스에 대하여 실제 SQL 문을 실행하는 것이 아니라 stored procedures를 호출한다. stored procedures란 연속되는 sql문으로 데이터베이스에 저장해두고 마치 함수의 호출처럼 사용하는 것이다. 사용시 속도의 향상에 도움이 되며 자바 코드에 SQL문장이 들어가지 않으니까 자바 코드가 SQL에 독립적이 된다. 

 

 - ResultSet (interface)

쿼리에 대한 결과값을 처리한다. ResultSet의 커서는 첫번째 레코드보다 바로 이전을 가리킨다.

@ next(): ResultSet 객체의 커서를 이동한다. 

@ getXXX(index or name): 메소드를 이용하여 데이터를 얻을 수 있다. 

'CS > database' 카테고리의 다른 글

Subquery  (0) 2021.04.07
Join  (0) 2021.04.06
JDBC Programming 개발 순서  (0) 2021.03.12
SQL 언어  (0) 2021.03.11
데이터베이스 기초-1  (0) 2020.07.23