14. 기술면접 - 데이터베이스 - JDBC (Java DataBase Connectivity)
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다
JDBC 란
JDBC (Java Database Connectivity)는 DB에 접근할 수 있도록 Java 에서 제공하는 API 이다.
- JDBC 는 관계형 데이터베이스에 사용되는 SQL 문을 실행하기 위해 자바로 작성된 클래스와 인터페이스로 구성되어 있다
- 특정 데이터베이스나 특정 데이터베이스 매커니즘에 구애 받지 않는 독립적인 인터페이스를 통해 다양한
데이터베이스에 접근하는 코드를 구현(mysql, oracle, mssql 등 추상화를 통해 접근가능)할 수 있도록 제공하는
자바 클래스의 표준 집합이다
- JDBC 클래스는 자바 패키지 java.sql 과 javax.sql 에 포함되어 있다
데이터베이스 벤더들이 이러한 라이브러리를 각자 만든다면, 자바 프로그래머는 각 벤더가 만든 라이브러리 사용법을 익혀야되어 헷갈리고 복잡해질 수 있다 (메소드명이 다 제 각각이면 다 외워야 됨..)
JDBC를 이용한 DB 접근
- 다음과 같은 순서로 이루어진다
1. JDBC Driver 로딩
2. Connection 맺기
3. SQL 실행
4. 자원 반환
1. JDBC Driver 로딩
Class.forName("com.mysql.jdbc.Driver"); // mysql 드라이버 로딩 - 현재는 com.mysql.cj.jdbc.Driver 를 사용한다
- Driver 란?
- JDBC Driver 는 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터
2. Connection 맺기
Connection conn = null;
conn = DriverManager.getConnection(url, username, password);
DriverManager 는 이름 그대로 데이터베이스 벤더들이 JDBC API를 구현한 드라이버를 관리한다. DriverManager.getConnection() 메소드는 인자로 들어오는 값에 따라서 특정 데이터베이스 벤더가 구현한 Connection타입의 객체를 반환한다 Connection 객체가 생성은 데이터베이스와 연결이 확립되었음을 의미한다
3 ~ 4 는 기타 사이트 참고
Plain JDBC API의 문제점
- 쿼리를 실행하기 전과 후에 많은 코드를 작성해야한다.
ex) 연결 생성(Connection), 명령문(sql), ResultSet(ResultSet) 닫기(conn.close(), stmt.close(), rs.close()), 연결 등
- 데이터베이스 로직에서 예외 처리 코드를 수행해야 한다 ( try {...} catch {...} 로 함으로 가독성 떨어짐 )
- 트랜잭션을 처리해야 한다 (tx.begin(), tx.end())
- 이러한 모든 코드를 반복하는 것으로, 시간이 낭비된다
JDBC Template
JDBC Template 은 Spring JDBC 접근 방법 중 하나로, 내부적으로 Plain JDBC API를 사용하지만, 위와 같은 문제점들을
제거한 형태의 Spring 에서 제공하는 class 이다 (기존에 문제 있던 내용들을 추상화하였음)
Spring JDBC 가 하는 일
- 자원의 생성관 반환 (Connection, Statement, ResultSet 등)
- Statement 실행
- ResultSet Loop 처리
- Exception 처리와 반환
- Transaction 처리
레거시 프로젝트에서는 XML 기반으로 설정을 한 번만 하여 빈으로 등록한 후 사용한다
@Autowired
private JdbcTemplate jdbcTemplate;
public void test() {
jdbcTemplate.query("select * from members", new RowMapper<Member>)() {
public Member mapRow(ResultSet rs, int rowNum) throws SqlException {
... 로직
}
});
}
Driver, Connection, Statement 과정이 사라졌으며, ResultSet 의 close 도 필요없어졌다
Spring JDBC 에서 개발자가 할 일
- 핵심적으로 해야될 작업만 해주면 나머지는 Framework 가 알아서 처리해준다.
- datasource 설정 (url, username, password)
- sql 문 작성
- 결과처리(ResultSet)
'∞. 기술 면접 > 4. 데이터베이스' 카테고리의 다른 글
13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping) (0) | 2021.10.18 |
---|---|
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning) (0) | 2021.10.18 |
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication) (0) | 2021.10.18 |
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer) (0) | 2021.10.18 |
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장 (0) | 2021.10.17 |
댓글
이 글 공유하기
다른 글
-
13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping)
13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping)
2021.10.18 -
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)
2021.10.18 -
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)
2021.10.18 -
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)
2021.10.18