JDBC 의 이해
- 애플리케이션을 개발할 떄 중요한 데이터는 대부분 데이터 베이스에 보관한다.
- 클라이언트가 애플리케이션 서버를 통해 데이터를 정하거나 조회하면 애플리케이션 서버는 밑과 같은 방법으로 데이터베이슬르 사용한다.!
- 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션 연결
- SQL 전달 : 애플리케이션 서버는 DB 가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달.
- 결과 응답 : DB에 전달된 SQL 을 수행하고 그결과를 응답 -> 이 결과를 서버에서 활용
이 방법은 각각의 데이터 베이스 마다 사용법이 다르다.
- 커넥션을 연결하는 방법, SQL 전달하는 방법 , 결과를 응답하는 방법은 DB마다 다르다.
- 관계형 데이터베이스는 몇개가 아닌 수십개가 존재한다.
그렇기 때문에 2가지의 문제점이 발생하게된다.
- 데이터베이스를 다른 종류의 데이터베이스로 변경시 사용법에 따라서 애플리케이션 서버에 개발된 사용코드를 함께 변경해야함.
- 개발자가 각각의 데이터베이스마다 사용법을 새로 학습해야함.
이 2가지 문제점을 해결하기 위해서 JDBC라는 자바 표준이 등장하게되었다.
-
JDBC(JAVA DataBase Connectivity)
- 자바에서 데이터베이스에 접속할 수있도록 해주는 자바 API
- 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공
표준 인터페이스가 존재하기 때문에 개발자의 경우 표준 인터페이스만 사용해서 개발을 하면된다.
- 인터페이스에 각각의 DB회사에서 자신의 DB에 맞도록 구현한 JDBC 드라이버를 가져와서 적용시키면 각 DB에 접근할 수 있게 된다.
- SQL 드라이버를 사용하면 MySQL DB와 앞서 했던 connection , statement,resultSet 과정이 진행되고 ,Oracle의 드라이벌르 사용하면 Oracle DB와 위 3가지가 진행된다.
위와 같은 방법으로 현재 문제로 제시되었던 2가지가 해결된다.
- 애플리케이션 로직은 이제 JDBC 표준 인터페이스에 의존하기 때문에 DB를 변경시에 JDBC 드라이버만 변경해주면된다.
- 2번째 문제도 마찬가지로 표준 인터페이스 사용법만 학습하면된다. -> 드라이버만 연결해주면됨.
참고점
- 각각의 데이터베이스마다 SQL, 데이터 타입등의 일부 사용법이 다르다. -> 일반적인 부분만 공통화 했기 때문에 한계가 존재
- JPA를 사용하면 각각의 데이터베이스마다 다른 SQL을 정의해햐하는 문제도 해결됨.
JDBC 와 최신 데이터 접근 기술
JDBC를 편하게 사용하는 다양한 기술이 존재하는 그중 대표적으로 2가지 기술로 나눌 수있다.
SQL Mapper
SQL Mapper 동작 방식
애플리케이션 로직 --> SQLMapper ---> JDBC
SQL 전달 -JDBCTemplate SQL 전달
-myBatis
- 장점 : JDBC를 편하게 사용하도록 도와줌
- SQL 응답결과를 객체로 편리하게 변환해준다.
- JDBC의 반복코드를 제거해준다.
- 단점 : 개발자가 직접 SQL을 작성해야함
대표 기술
- 스프링 JDBC Template ,My batis
ORM 동작 방식
애플리케이션 로직 --> JPA
객체 전달 ↑
JPA 구현체 SQL 전달
-하이버네이트 --> JDBC
-이클립스링크
- 관계형 데이터베이스 테이블과 매핑해주는 기술
- 이 기술로 개발자는 반복적인 SQL을 직접 작성할 필요가 없어짐.
- ORM 기술이 개발자 대신 SQL 을 동적으로 만들어줌
- 각각의 데이터베이스마다 다른 SQL을 사용하는 문제도 중간에서 해결해준다.
- 자바 진영의 ORM 표준 인터페이스
장점
단점
- 쉬운 기술이 아니라서 실무에서 사용하려면 깊게 배워야함.
대표 기술