프로그래밍/Spring

DB Connection, JDBC

개발계발게발 2022. 4. 7. 15:50
반응형

DB Connection

  • DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단
  • DB Connection은 Database Driver와 Database 연결 정보를 담은 URL이 필요
  • Java의 DB Connection은 JDBC를 주로 이용하는데, URL 타입을 사용

 

DB Connection 구조

  • 2Tier - 클라이언트로서의 자바 프로그램(JSP)이 직접 데이터베이스 서버로 접근하여 데이터를 액세스하는 구조
  • 3Tier - 자바 프로그램과 데이터베이스 서버 중간에 미들웨어 층을 두어, 그 미들웨어 층에게 비즈니스 로직 구현부터 트랜잭션 처리, 리소스 관리 등을 전부 맡기는 구조

JDBC

  • Java DataBase Connectivity의 약어로 자바 언어로 다양한 종류의 관계형 데이터베이스에 접속하고 SQL문을 수행하여 처리하고자 할 때 사용되는 표준 SQl 인터페이스 API
  • DB마다 연결 방식과 통신 규격이 따로 있기 때문에 프로그램을 DB와 연결한다면, 해당 DB와 관련된 내용이 변경될 시 많은 변경 사항이 존재하나 각 DBMS에 맞는 JDBC를 받아주게 되면 쉽게 DBMS를 변경
  • 즉, DBMS 종류(MySQL, MsSQL, Oracle 등)에 상관 없이 하나의 JDBC API를 사용해서 데이터베이스 작업을 처리할 수 있게 된다. JDBC API를 사용하는 애플리케이션의 구조

JDBC 드라이버

  • JDBC Driver: 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터

  1. DB 벤더에 맞는 드라이버 로드
  2. DB 서버의 IP, ID, PW 등을 DriverManager 클래스의 getConnection() 메소드를 사용하여 Connection 객체 생성
  3. Connection에서 PreparedStatement 객체를 받음
  4. executeQuery를 수행하고 ResultSet 객체를 받아 데이터를 처리
  5. 사용하였던 ResultSet, PreparedStatement, Connection을 close

 

getConnection()

  • DriverManager.getConnection() 은 실제 자바 프로그램과 데이터베이스를 네트워크 상에서 연결해 주는 메소드이다.
  • 연결에 성공하면 DB와의 연결 상태를 Connection 객체로 표현하여 반환한다.
  • 가장 부하가 많이 걸리는 과정이다.

 

Connection

  • DB 연결 객체
  • 데이터베이스로의 연결 기능을 제공하며, Statement 객체를 생성하는 기능 제공
  • SQL문을 데이터베이스에 전송하거나, 이러한 SQL문을 커밋하거나 롤백하는데 사용
  • 보통 Connection 하나 당 트랜잭션 하나를 관리한다.
    • Mybatis의 SqlSession, Hibernate의 TransactionManager 등의 Close가 이루어지면 Connection을 ConnectionPool에 반납함.

 

Statement 또는 PreparedStatement

  • SQL문 실행 객체

 

ResultSet

  • 쿼리문의 결과를 가지는 객체

 

Driver

  • 각 JDBC Driver 벤더에서 구현해야 하는 인터페이스

 

DriverManager

  • 사용될 드라이버를 등록하거나 등록을 해제하는 기능과 DB와 연결하는 기능을 수행함
반응형