[포스코x코딩온] 웹개발자 풀스택 부트캠프8기

[포스코x코딩온] JDBC와 SQL Mapper 개념(Spring Database)

항상 발전하는 개발자 2023. 11. 1. 17:05
728x90

Spring Database

 

JDBC

  • Java Database Connectivity
  • 자바 언어와 DB를 연결해주는 통로로, 자바에서 데이터베이스에 접근할 수 있도록 해주는 자바 API
  • 단점 : 반복적이고 지루한 코드 작성이 필요하며, SQL 예외 처리, 리소스 관리(연결, 문, 결과 집합 닫기 등) 등의 복잡한 작업을 직접 처리

 

Spring JDBC

  • 정의 
    • JDBC의 복잡성을 줄이기 위한 Spring 프레임워크의 일부
    • 데이터베이스 작업을 단순화하고 코드의 양을 줄여줌
  • 작동 방식
    • 기존 JDBC 코드의 많은 부분을 추상화하고, 템플릿 디자인 패턴을 이용

 

프로젝트 생성

H2 

  • H2 DB는 Java 기반의 오픈소스 RDBMS이다.
  • Java로 작성된 인메모리(in-memory) 관계형 데이터베이스
  • 특징 
    • Very fast, open source, JDBC API
    • Embedded and server modes: in-memory databases
    • Browser based Console application
    • Small footprint: around 2 MB jar file size
    • 설치 없이 사용 가능하며, 빠르게 개발과 테스트를 진행할 수 있다.
    • 인메모리 모드로 실행되면, 애플리케이션 종료 시 모든 데이터가 사라진다.
  • 접속
    • src/main/resources/application.properties
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:DB이름
  • localhost:8080/h2-console로 접속


Spring은 대표적으로 두 가지 유형의 데이터베이스와의 상호작용 방식이 존재.

SQL Mapper와 ORM(Object Relative Mapping)

  • 공통점: 두 방식 모두 Java 객체와 데이터베이스 간의 상호 작용

SQL Mapper( ex. JDBC, MyBatis)

  • 목적: SQL 쿼리와 Java 매서드/객체 간의 매핑을 중심으로 한다.
  • Object와 SQL의 필드를 매핑해 데이터를 객체화하는 기술
  • 객체와 테이블 간의 관계를 매핑하는 것과 다르다.
  • 개발자는 SQL 쿼리를 직접 작성하고, 해당 쿼리의 결과를 Java 객체에 매핑함
  • 동적 SQL 생성, 조건문, 반복문 등의 SQL 작성에 있어서 유연하다.
  • SQL 쿼리의 세밀한 튜닝이 필요할 때 유용하다.
  • 장점: 코드 분리, 객체지향접근, 효율적인 리소스 관리
  • ex) JDBCTemplate, MyBatis

 

ORM (Object Relational Mapping)( ex. JPA, Hiernate)

  • 목적: Java 객체와 데이터베이스 테이블간의 관계 매핑
  • Java 객체 (Entity)가 DB 테이블과 어떻게 매핑될지를 정의함
  • 대부분의 CRUD 연산에 대한 SQL을 자동으로 생성하며, 개발자는 객체 지향적으로 데이터를 다룰 수 있게 됨.
  • ex) Hibernate, JPA
728x90