참고
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 Mapper 와 ORM 기술이 등장! ( 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를 구현한 하이버네이트, 이클립스 링크 등이 존재한다