JDBC란?
쉽게 DB연결, CRUD 기능을 위한 인터페이스다 라고 이해하면 된다.
JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스(DB)에 저장, 업데이트, 읽고, 삭제 할 수 있도록 하는 자바 API이다.
Spring Data JDBC, Spring Data JPA 등과 같은 기술이 등장하면서 JDBC API를 직접적으로 사용하는 일은 줄어들었다.
하지만, Spring Data JDBC, Sprind Data JPA와 같은 기술도 데이터베이스와 연동하기 위해 내부적으로 JDBC를 이용하기 때문에 JDBC의 동작 흐름에 대해 알 필요가 있다.
이 그림을 보니까 기억이 났다. 난 이 부분을 해봤었다.
아하, 예전에 교육에서 직접 이 부분들을 직접 작성 했었던 기억이 난다.
그때 선생님도 이것을 나중에 안쓰겠지만, 잠깐이라도 기억해보라 하셨다. 그때 항상 순서대로 생성하고 반대로 객체 순서대로 close(), close() 했던 기억이 난다. 가장 원시적인 형태는 코드량이 어마어마했고, 실제로 처음 시작은 어느 홈페이지에서 코드들을 복사해오고, JDK 내부에 라이브러리를 외부에서 다운 받아서 이식했어야 했고, 해당 파일의 경로를 매칭 시켜주고 읽어오고, 적용시키기 시작하면서 하나씩 줄어들고 이후엔 모듈화까지 시키는 작업이었다. 이후엔 dependencies를 추가만 하면 자동으로 다운로드 되는 것을 보고 허망하기 그지없었다.
당시 처음 부분만해도 코드량이 상당히 많았고 모듈, 드라이버들의 연결을 직접 코드로 구현해서 연결해줘야 해서 매우 복잡했다. 난 그때 이걸 개발자들이 직접 다 기억하고 한다고?? 라는 물음과 함께 혼돈의 도가니였다. 모든 학생들이 오류를 토해내며 도저히 수업도 진행이 힘든 수준이었고, 실습 자체가 오류 잡느라 자주 끊겨서 이해하는 흐름도 계속해서 끊어졌었다. 나름대로 집중하여 모듈화시키고 어떤 파일들이 어디 들어가고 서로 연결이 되었는지 이해관계를 스스로 정리하긴 했었지만 해당 프로젝트를 열어도 제대로 기억하긴 힘들 것 같다. 그 경험들은 아주 불편했었고 기능 개발이나 이런것 보다는 그저 라이브러리 하나 실제로 작동하는지 확인하는 것 자체가 어려웠다. 또한 Java와 다르게 각 모듈마다 직접 여러 설정들을 건들여야 하는데 또 그안의 언어들이 다르다. 이해도가 낮은 언어의 코드를 건들이다보니 뭔가 점하나 잘못찍으면 문제가 발생하기도 했다.
매번 프로젝트 생성 마다 백업해둔 모듈을 넣고 임포트하는 과정, 하나씩 연결되는지 확인하는 로그체크 과정, 또 모든게 정상 연결 되었는지 확인하는 과정들을 거쳤다. 그땐 몰랐다 너무 정신이 없고 방대해서 이게 그 과정이었는지.
스프링이 왜 개발자들에게 봄이 왔다고 전하는지 이해가 되기 시작한다.
하지만 지금 Spring Framework를 통해 이것을 그렇게 편하게 만들어준 것이구나 또 한번 느끼게 된다. Spring Source라는 기업과 이 오픈소스를 발전 시키는 선배 개발자들의 노력이 이런 성과를 만들지 않았을까. 너무나도 편하게 사용되고 있다. 나는 생성자의 @Getter, @Setter ,@RestController등 너무 쉬운 선배들의 작품들을 사용하고 있다. 나는 지금 Spring을 사용하고 있지만, 지금도 계속해서 발전된다면 10년뒤 20년뒤에는 내가 사용하는 프레임워크가 내가 느꼈던 과거의 복잡한 코드들 처럼 느껴지지 않을까? 또는 코드적인 부분만이 아니라 이것으로 구현되는 서비스들이 고도화 되거나 다른 형태로 후배들에게 편의성을 제공하지 않을까? 나도 그런 선배 중 한명이 되고 싶다.