반응형
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가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터
- DB 벤더에 맞는 드라이버 로드
- DB 서버의 IP, ID, PW 등을 DriverManager 클래스의 getConnection() 메소드를 사용하여 Connection 객체 생성
- Connection에서 PreparedStatement 객체를 받음
- executeQuery를 수행하고 ResultSet 객체를 받아 데이터를 처리
- 사용하였던 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와 연결하는 기능을 수행함
반응형
'프로그래밍 > Spring' 카테고리의 다른 글
DB Connection Pool (0) | 2022.04.07 |
---|---|
available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations 오류 (0) | 2022.04.05 |
POM(Project Object Model)이란? (0) | 2021.08.26 |
Spring(초기 설정)-UTF-8 설정(한글 깨짐 문제- 한글 인코딩) (0) | 2021.08.26 |
Spring Project 생성하기 (Spring Legacy, SpringStarter 차이) (0) | 2021.08.25 |