티스토리 뷰

Spring

[스프링 DB] JDBC

GiHoo 2023. 8. 9. 15:12

중요한 데이터는 애플리케이션 서버를 거쳐 데이터베이스에 저장한다.

클라이언트의 요청에 따라 애플리케이션 서버는 데이터베이스에 접근하여 처리한다.

 

위 방식은 고전적인 데이터 처리 방식이다. 하지만 문제가 있다.

데이터베이스의 종류는 여러가지다.(MySql, Oracle ...) 그렇기에 데이터베이스에 맞는 포맷을 따로 적용해야 한다.

 

이를 위해 JDBC라는 자바 표준이 등장한다.

JDBC(Java DataBase Connectivity)

표준 인터페이스를 정의하여 제공한다.

  • java.sql.Connection - 연결
  • java.sql.Statement - SQL의 내용
  • java.sql.ResultSet - SQL 요청 응답

위 인터페이스와 각 데이터베이스 사에서 제공하는 라이브러리를 사용하여 기능을 만든다. -> 드라이버

MySQL과 Oracle

JDBC와 드라이버를 통해 

DB 교체 시 발생하는 번거로움을 줄여주고, 표준 인터페이스 학습을 통해 DB 접근을 다룰 수 있게 되었다.

-> JDBC 코드를 변경하지 않아도 되지만, 각 문법에 맞는 SQL을 사용해야 하기에 변경하긴 해야 한다.

 

최신 JDBC  기술

SQL Mapper

JDBC를 편리하게 사용할 수 있게 도와준다.

  • SQL 응답 결과를 객체로 편리하게 변환
  • JDBC의 반복 코드를 제거

ORM 기술

Object Relational Mapping - 객체 관계 매핑

객체를 관계형 데이터베이스 테이블과 매핑해주는 기술

-> 반복적인 SQL 작성을 직접 하지 않고, SQL을 동적으로 만들어 실행해준다.

 

SQL Mapper 와 ORM 기술

SQL Mapper는 SQL만 작성하면 번거로운 일을 SQL Mapper가 대신 해결해준다. (접근성이 좋다)

ORM 기술은 SQL 자체를 작성하지 않는다. (생산성이 좋다.) 하지만 쉬운 기술이 아니다.

또한, 모두 기본으로 JDBC를 사용하기에 동작 원리를 잘 이해해야 한다.

 

 

JDBC의 요청 흐름

DriverManager가 connection 구현체를 전달한다.

JDBC 등록하기

데이터베이스에 전달할 sql문을 작성한다.

  • PreparedStatement : sql문의 값을 바인딩 할 수 있다. setString 등으로 ? 값에 대입할 수 있다.
  • Statement : 바인딩하지 않는 값

excuteUpdate()로 sql을 실행한다. int 값을 반환, 영향받은 DB의 row값을 반환한다.

 

쿼리를 실행한 후 리소스를 정리해야 한다. Connection과 PreparedStatement (후에 추가될 ResultSet)

이를 예외처리에서 해줘야 한다. 만약 리소스 정리하다 예외가 발생하면 그 리소스는 계속 잔존하는 것이다.

예외처리는 선언한 순서의 역순으로 처리한다.

 

 

 

 

 

본 포스팅은 인프런 강의 김영한님의

[ 스프링 DB 1편 - 데이터 접근 핵심 원리 ] 를 수강하며 작성한 내용입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30