Spring

[Spring] 데이터 액세스 기술 유형(SQL 중심 / 객체 중심(ORM)) + Spring Data JDBC란?

jungha_k 2022. 10. 27. 21:40

 

JDBC란? 

JDBC : Jaba Database Connectivity

 

= 데이터를 db에 저장, 업데이트 하거나
db에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있게 해주는 표준 API

 


JDBC API를 사용하면 개발자는 다양한 벤더 (Oracle, MySQL, MS SQL) 데이터베이스와 연동할 수 있다.

Java에서 제공되며,

데이터 액세스 기술의 기본이 되는 저수준 API지만, 구체적 사용법은 배우지 않아도 된다. (지금 내 단계 한정)

JDBC를 직접적으로 사용하기 보다는 JDBC를 내부적으로 이용하는 

Spring Data JDBCSpring Data JPA 로 더 편하게 데이터 액세스 로직 구현할 수 있기 때문!


대신 JDBC 동작 흐름 정도는 알아둬야 한다.

 

 


 

JDBC API의 동작 흐름

 

 

JDBC API를 사용하기 위해서는

JDBC 드라이버를 먼저 로딩한 후에 db와 연결한다.


*JDBC 드라이버? 

: JDBC API를 사용하기 위해 로딩되어야 하는 인터페이스 (db와 통신을 담당)
JDBC드라이버의 구현체를 사용해서 Oracle, MySQL 같은 특정 벤더에 맞게 db에 액세스 할 수 있다. 

 

 

JDBC API 사용 흐름

 

 

Connection 객체 : DriverManeger 를 통해 db와 연결되는 세션

Statement 객체 : SQL 쿼리문을 실행하기 위한 객체 (생성 후 정적인 SQL 쿼리문을 문자열로 가짐)

ResultSet 객체 : 실행된 SQL 쿼리문에 대한 결과 데이터 셋

 

* JDBC API를 통해 사용된 객체들은 사용 이후에

사용한 순서의 역순으로 차례대로 close

 

 

 

*Connection Pool 이란? (=DBCP, Dabatase Connection Pool)

Connection 관리자


데이터베이스 Connection을 미리 만들어서 보관,
애플리케이션이 필요할때 Connection을 제공해주는 역할을 한다.

 

* 마치 자바의 스레드풀(Thread-Pool)과 유사함!


Connection객체 생성은 비용이 많이 들어서,
애플리케이션 로딩 시점에 미리미리 생성해둬야 성능을 향상시킬 수 있기 때문!
(db연결이 필요한 경우 connection 객체 새로 생성X
미리 만들어둔 connection 객체를 사용한다)

ex) HikariCP


Spring Data JDBC ?

 

Spring에서 사용가능한 대표적 데이터 액세스 기술 -

  • mybatis
  • Spring JDBC
  • Spring Data JDBC
  • JPA
  • Spring Data JPA

 

이 데이터 액세스 기술은 SQL 중심 기술 / 객체(Object) 중심 기술로 나뉜다.

 


SQL 중심 기술

 

ex) mybatis, Spring JDBC

애플리케이션에서 DB에 접근하기 위해 SQL 쿼리문을 
애플리케이션 내부에 직접적으로 작성한다.
= SQL 쿼리문이 코드 안에 직접적으로 포함되어 있다.


*과거부터 많이 사용하던 방식이지만,
현재 추세 : SQL 중심의 기술 ➡ 객체 중심 기술로 지속적 이전 중!



객체(Object) 중심 기술 = ORM(Object-Relational Mapping)

 

ex) JPA(대표적), Spring Data JDBC, Spring Data JPA

: 데이터를 SQL 쿼리문 위주로 생각하는 것이 아닌,
모든 데이터를 객체 관점으로 바라보는 기술

Java 객체를 이용해 애플리케이션 내부에서 객체를 SQL 쿼리문으로 자동 변환 후에
데이터베이스 테이블에 접근!

 


* 용어가 비슷해서 헷갈린다면?

 

Spring JDBC (sql 쿼리 기반 기술) : JDBC에서 파생된 기술 

Spring Data JDBC : Spring JDBC를 ORM 기술로 만든 것 

 

JPA : 대표적인 ORM 기술

Spring Data JPA : JPA 기술을 이용해 Spring 전용으로 만듬


 

Spring Data JDBC란?

JPA처럼 ORM 기술을 사용, but JPA의 기술적 복잡도를 낮춤

특징 
  • 2018년에 처음 릴리즈 (꾸준히 기능 업그레이드 중)
  • JPA 보다는 상대적으로 적게 사용됨
  • 애플리케이션 규모 상대적으로 크지 않고, 복잡하지 않을 경우 Spring Data JDBC 굿


    *JPA - 실무에서 많이 사용한다 
    * Spring Data JPA - Spring 에서 JPA 기술을 편리하게 사용하기 위함 (선행지식 필요)