[포스코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