이 글은 개발 공부하는 "학생"의 글입니다. 참고용으로만 활용해주시길 바랍니다. 혹시 오류를 찾으셨다면 답글달아주시면 정말 감사드리겠습니다:)
공부한 곳 : 김영한 스프링 DB 핵심강의1
애플리케이션 개발은 아래와 같은 모양을 띄게 된다.
클라이언트가 서버를 통해 데이터를 저장하거나 조회하면, 서버는 데이터베이스와 아래와 같은 과정을 진행한다.
여기에 따른 2가지 큰 문제
1. 데이터베이스를 변경하면, 애플리케이션 서버에 개발된 데이터베이스 사용코드를 모두 변경해야함
2. 개발자의 learning curve - 모든 DB에 대한 커넥션 연결, SQL, 결과 응답을 공부해야함
이러한 문제때문에 "표준"이 필요하게 되었고, JDBC가 등장하게 되었다.
JDBC는 연결, SQL을 담은 내용, SQL요청응답을 인터페이스로 정의해서 제공한다.
JDBC 표준 인터페이스를 통해서 개발을 하면 된다. 하지만 인터페이스는 구현체가 있어야 기능이 동작 할 수 있다. 이 때, 구현체는 각 DB벤더(회사)에서 라이브러리로 제공한다. -> JDBC 드라이버.
ex) MySQL JDBC 드라이버, Oracle JDBC 드라이버
-> DB에 따라서 해당 회사에서 제공하는 Driver library를 활용하면 된다.
-> Spring initializer의 디펜던스를 통해 여러 드라이버가 있음을 확인할 수 있다.
JDBC가 많은 부분을 편리하게 해주었지만, DB마다 일부부분이 다르다.
SQL의 경우 표준화를 시키려는 노력이 있었지만, 차이는 여전히 존재한다.
따라서, JDBC 코드는 유지시키더라도, DB가 바뀔 경우에 SQL은 다시 바꿔야한다.
-> 차 후에 정리할 것이지만, 이 문제를 해결한 것이 JPA(Java Persistence API)이다.