반응형
JDBC vs SQL Mapper vs ORM
세 기술 모두 데이터 접근 기술
자바에서 관계형 DB를 접근하기 위해서는 데이터베이스와 자바 간의 인터페이스를 담당하는 데이터 접근 기술이 필요
= 데이터를 데이터베이스에 저장하고 불어오기 위해 중개 역할을 하는 기술이 필요하다
( 순수 JDBC (Java에서 사용) )
1) Spring JDBC (Ex. JdbcTemplate)
2) SQL Mapper
3) ORM
: 메모리 상의 데이터를 파일 시스템, 관계형DB 혹은 객체DB 등을 활용하여 영구적으로 저장하여 영속성을 부여한다
( 일반적으로 애플리케이션의 데이터는 메모리(RAM)에 임시로 저장되는데, 메모리에 저장된 데이터는 프로그램이 종료되거나 시스템이 꺼지면 사라진다 )
Persistence (영속성)
- 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는 데이터의 특성
- Persistence Layer(영속성 계층)
- 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층
- JDBC를 이용하여 직접 구현할 수 있지만, Persistence Framework를 이용한 개발이 많이 이루어진다
- Persistence Framework(영속성 프레임워크)
- JDBC 프로그래밍의 복잡함이나 번거로움 없이 간단한 작업만으로 데이터베이스와 연동되는 시스템을 빠르게 개발할 수 있으며 안정적인 구동을 보장한다
- SQL Mapper와 ORM으로 나눌 수 있다
JDBC (Java Database Connectivity)
자바를 이용해 다양한 데이터 저장 기술에 일괄적으로 접근할 수 있는 데이터 접근 기술
- 자바 코드에서 SQL 쿼리를 작성하고, DB로 보내 데이터를 받을 수 있다
- 자바 애플리케이션에서 DBMS의 종류에 상관 없이, 하나의 JDBC API를 통해 DB작업을 처리하고, DB에 따라 JDBC Driver만 바꾸면 어느 DB에서든 접근할 수 있다
- JDBC는 DB 연결, SQL 실행, 결과 처리 등의 작업을 매번 직접 작성해야 하므로, 반복적인 코드가 많아 코드가 길어지고 그만큼 시간도 더 소요되며 결과로 받은 데이터를 직접 객체를 만들어 넣어줘야한다는 점이 불편하다
- 장점
- JDBC드라이버로 거의 모든 DB에 접근하는 것이 가능하다 (범용성)
- SQL 쿼리, DB 연결, 트랜잭션 관리 등을 직접 제어가 가능하다 (세밀한 제어)
- 단점
- 매번 DB 연결과 자원 해제를 위한 코드를 작성해야한다 (반복적인 코드)
- 결과로 받은 데이터를 직접 객체에 일일이 넣어줘야한다 (수동적인 매핑)
- 비지니스 로직에 집중하기보단 SQL 의존적인 개발을 해야 한다
- connection, resultset 등 공유 자원을 매번 반환(해제) 해야 한다
이러한 여러 단점들을 개선하여 더 쉽고 간단한 작업만으로 DB와 소통할 수 있는 시스템이 바로 Persistence Framework이다.
Persistence Framework
SQL Mapper
SQL 쿼리 결과를 자바 객체에 수동으로 매핑하는 방식으로, SQL을 XML 파일 등에 분리하여 관리한다.
Mybatis
- 자바 애플리케이션에서 SQL 쿼리를 쉽게 작성하고 실행할 수 있도록 도와주는 Persistence Framework
- 장점
- 자바 코드로부터 SQL 쿼리문을 따로 XML파일로 관리(비즈니스 로직에 집중)
- SQL 쿼리를 직접 작성하고 관리할 수 있고 복잡한 쿼리문 작성에 유리하다(SQL 제어)
- 간단한 설정으로 DB와 연동을 쉽게 설정할 수 있다(간편한 설정)
- 단점
- SQL 결과를 자바 객체로 수동으로 매핑해야 하므로 추후 DB 테이블 컬럼이 추가될 때 직접 쿼리문을 수정해야 한다(매핑 작업)
- SQL 쿼리를 직접 작성해야 하므로 쿼리문법을 모른다면 어려움이 있다(러닝커브)
ORM(Object-Relational Mapping)
객체와 관계형 데이터베이스를 매핑 SQL 코드 없이 메서드 호출만으로 데이터 조작이 가능하다.
JPA
- 자바 표준 API로, 관계형 데이터베이스와 자바 객체 간의 매핑을 위한 표준 인터페이스를 제공
- JPA를 사용하면 개발자는 객체 지향적인 방식으로 데이터베이스와 상호작용을 할 수 있다
- 자바 표준 API이기 때문에 여러 구현체에서 사용할 수 있다
- 대표적인 구현체 : Hibernate
Hibernate
- Hibernate는 JPA 스펙을 구현한 ORM 프레임워크 중 하나로 객체-관계 매핑을 위한 다양한 기능을 제공하며 대부분의 JPA 기능을 포함하고 있다
- 쉽게 말해 JPA에서 메소드로 요청된 정보들을 JDBC가 잘 알아들을 수 있도록 한번 더 표준화 작업을 해주고 JDBC로 넘겨준다
- 캐싱, 지연 로딩 등의 기능을 제공하여 성능 최적화를 지원한다
반응형
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2024-2 SpringBoot 스터디] 조상혁 #3주차 (2) | 2024.11.13 |
---|---|
[2024-2 SpringBoot 스터디] 탁태현 #2주차 (0) | 2024.11.07 |
[2024-2 Spring Boot 스터디] 김문기 #2주 (0) | 2024.11.07 |
[2024-2 Spring Boot 스터디] 김아리 #2 주차 (0) | 2024.11.06 |
[2024-2 SpringBoot 스터디] 조상혁 #2주차 (3) | 2024.11.06 |