스프링부트를 사용해서 jdbc를 이해해보자
스프링 프로젝트 생성할 때 JDBC API, H2 Database, Lombok 선택
H2 데이터베이스 설정
MySQL을 많이 사용하지만 H2 데이터베이스는 개발이나 테스트 용도고 사용하기 좋은 가볍고 편리한 DB이다.
윈도우 사용자일 경우 cmd에서 H2/bin 폴더로 이동한 다음 h2.bat 를 입력해주면 실행된다.
데이터베이스 파일 생성 방법
JDBC URL에 다음 입력 : jdbc:h2:~/test (test말고 다른 걸로 설정해도 된다)
그 후 연결을 눌러주면 ~/test.mv.db 파일 생성을 확인한다
이후부터는 jdbc:h2:tcp://localhost/~/test 이렇게 접속
h2 데이터베이스를 웹 콘솔로 접근하기 위해서는 http://localhost:8082 로 접속
JDBC 이해
JDBC 등장 이유
애플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관한다
클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 애플리케이션 서버는 다음 과정을 통해서 데이터베이스를 사용한다
- 커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결한다.
- SQL 전달: 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.
- 결과 응답: DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다.
문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방법이 모두 다르다는 점이다
따라서 나타나는 아래와 같은 문제점이 나타났다
- 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함께 변경해야 한다.
- 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습 해야 한다.
이런 문제를 해결하기 위해 JDBC라는 자바 표준이 등장한다.
JDBC 표준 인터페이스
대표적으로 다음 3가지 기능을 표준 인터페이스로 정의해서 제공한다.
java.sql.Connection - 연결
java.sql.Statement - SQL을 담은 내용
java.sql.ResultSet - SQL 요청 응답
JDBC 드라이버
그런데 인터페이스만 있다고해서 기능이 동작하지는 않는다. 이 JDBC 인터페이스를 각각의 DB 벤더(회사)에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공하는데, 이것을 JDBC 드라이버라 한다. (MySQL db 에 접근할 수 있는 것은 MySQL jdbc드라이버라고 한다.)
JDBC의 등장으로 다음 2가지 문제가 해결되었다.
1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버의 데이터베이스 사용 코드도 함 께 변경해야하는 문제
- 애플리케이션 로직은 이제 JDBC 표준 인터페이스에만 의존한다. 따라서 데이터베이스를 다른 종류의 데이터베이스로 변경하고 싶으면 JDBC 구현 라이브러리만 변경하면 된다. 따라서 다른 종류의 데이 터베이스로 변경해도 애플리케이션 서버의 사용 코드를 그대로 유지할 수 있다.
2. 개발자가 각각의 데이터베이스마다 커넥션 연결, SQL 전달, 그리고 그 결과를 응답 받는 방법을 새로 학습 해야하는 문제
- 개발자는 JDBC 표준 인터페이스 사용법만 학습하면 된다. 한번 배워두면 수십개의 데이터베이스에 모두 동일하게 적용할 수 있다
'Spring > Spring DB' 카테고리의 다른 글
JDBC에 의존하는 트랜잭션을 적용하면서 나타나는 문제점 (0) | 2023.10.03 |
---|---|
트랜잭션 (1) | 2023.10.02 |
커넥션 풀과 데이터소스 이해 (0) | 2023.09.29 |
JDBC 개발 - 등록, 수정, 조회, 삭제 (0) | 2023.09.24 |
H2 데이터베이스 연결 (0) | 2023.09.24 |