Search
Duplicate
📒

[Database Study] 04-1. JDBC - 소개

상태
미진행
수업
Database Study
주제
JDBC
4 more properties
참고

jdbc 란?

NOTE
JDBC(Java Database Connectivity) ⇒ 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.

JDBC 등장이전

NOTE
애플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관한다
클라이언트가 서버(어플리케이션)에 요청을 보내면, 데이터를 저장하거나, 조회하는 것을 아래처럼 데이터베이스를 사용해 처리한다.
1.
커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다
2.
SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다
3.
결과 응답 : DB는 전달된 SQL을 수행하고 그 결과를 응답한다, 애플리케이션 서버는 응답 결과를 활용한다.
각각의 데이터베이스(mysql, redis, mongoDb 등등) 사용방법이 다르고 접근 방법이 달라 데이터베이스를 변경할때 마다 접근 코드도 변경되어야 했다.
이러한 문제점을 해결을 위해 JDBC라는 자바에서 데이터베이스 접근 표준 인터페이스가 등장한다.

DB 드라이버

NOTE
JDBC는 표준 “인터페이스” 이기 때문에 JDBC만으로는 아무것도 할 수 없다!
해당 드라이버만 바꿔주면 코드변경없이 데이터베이스 교체가 가능해짐!
구현체가 필요하고, 각각 DB회사에서 JDBC 인터페이스의 구현체로 만들어 라이브러리로 제공하는게 JDBC 라이브러리다.
ex) MySQL DB에 접근할 수 있는 것은 MySQL JDBC 드라이버
ex) Oralc DB에 접근할 수 있는 것은 Oracle JDBC 드라이버라 한다.

JDBC 장점/단점

NOTE
장점
데이터베이스 변경시, 불필요한 애플리케이션 코드변경을 하지 않아도된다.
JDBC에 연결로직을 의존하면서, 다른 DB로 변경해도 JDBC 구현 라이브러리만 변경하면된다.
데이터베이스마다 달랐던 커넥션 연결, SQL 전달, 응답 방법을 JDBC 표준라이브러리가 동일하게 제공하기 때문에 따로 학습하지 않아도 된다.
단점
일반적인 부분을 공통화 했지만, 각 DB마다 제공하는 특별한 양식이 다르기에 한계가 존재한다.
ex) 페이징 SQL - 각 DB마다 다름
즉 DB 연결코드는 JDBC를 사용해서 변경하지 않아도되지만, SQL문은 데이터베이스에 맞게 해결해줘야 한다.

JDBC 와 최신 데이터 접근 기술

NOTE
JDBC한계를 극복하기 위해 대표적으로 SQL MapperORM 기술이 등장! ( mybatis vs jpa )
이 2가지 기술 모두 base low level에서는 JDBC를 사용한다!

SQL Mapper

NOTE
대표기술 - 스프링 JdbcTemplate, MyBatis
장점
JDBC를 편리하게 사용하도록 도와준다
JDBC의 반복코드를 제거해준다
SQL 응답 결과를 객체로 편리하게 반환해준다
단점
개발자가 직접 SQL문을 작성해야한다 (어디까지나 ORM에 비해서!)

ORM 기술

NOTE
ORM ⇒ 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다
장점
이 기술 덕분에 반복적인 SQL문을 작성하지 않고, ORM 기술이 개발자 대신 SQL을 동적으로 만들어 실행해준다
추가로 각각의 데이터베이스마다 다른 SQL을 사용하는 문제도 중간해서 해결해준다
대표기술
JPA(자바 진영의 ORM 표준 인터페이스)
JPA를 구현한 하이버네이트, 이클립스 링크 등이 존재한다