티스토리 뷰
[면접 준비 - Spring]Spring JDBC, Spring Data JDBC, Spring Data JPA
Vagabund.Gni 2022. 12. 13. 18:18목차
JDBC
먼저 JDBC는 영속성을 보장하기 위해 자바에서 자체적으로 제공하는 기능이자, DB 커넥터이며
특징으로는 다양한 DB Driver들의 작성방식을 통일시켜 표준화했다는 점이 있다.
자바의 모든 데이터 액세스는 내부적으로 이 JDBC를 사용하고 있으며, 앞으로 알아볼 기술도 마찬가지다.
Spring JDBC
이 JDBC에는 특유의 단점이 있었는데 바로 DB 연결과 SQL 사용, Data Mapping 등의 모든 과정을
개발자가 직접 입력해주어야 한다는 점이었다. 이는 개발 생산성 저하로 이어지는 치명적인 문제였으며,
Spirng JDBC는 이 반복적인 작업에서 개발자를 해방시켜주었다.
DB 커넥션을 가져오는 DataSource를 빈으로 등록하기만 하면, 실행할 SQL과 파라미터 등을
넘겨주는 것만으로 원하는 결과를 받을 수 있게 되었는데,
이로써 JDBC에서 가장 많은 시간이 걸리는 Connection 부분을 자동으로 처리해 준다.
또한 트랜잭션과 관련된 모든 작업도 알아서 처리해주도록 개선되었다.
JDBC Template
기존 JDBC API의 문제점을 개선한 Spring Class.
Data Source
JDBC API에 포함된 DB 연결 인터페이스.
Spring Data JDBC
Spring Data JDBC는 Spring Data라는 프로젝트의 일원이다.
조금 구체적으로는 Spring JDBC에 대한 추상화와 함께
CrudRepository를 구현한 SimpleJdbcRepository를 제공한다.
또한 DB를 주로 조회하는 것에 초점을 맞춘 라이브러리로서
JDBC Template을 제공하고 트랜잭션 매니저를 지원하지만
Hibernate 기반 영속성이나 ddl auto create 같은 스키마 관리는 지원하지 않는다.
이는 Spring Data JDBC가 Hibernate ORM을 사용하지 않기 때문이며,
여기서 ORM이란 간단하게 말해 객체와 테이블을 매핑해 데이터를 객체화하는 기술을 말한다.
Spring Data JPA
Spring Data JPA 역시 Spring Data 프로젝트의 일원이다.
JPA를 위한 스프링 저장소를 지원하는데(JpaRepository),
여기서 JPA는 Java 진영의 대표적인 ORM 스펙이다.
계속해서 Spring Data JPA는 이 JPA를 추상화한 기술이며,
JPA와 JPA를 구현한 Hibernate의 API를 쉽게 사용할 수 있도록 도와주는 모듈이다.
계속해서 실제 앱이 DB에 접근하는 순서는 위와 같다.
'Development > Technical Interview' 카테고리의 다른 글
[면접 준비 - Spring]Spring Boot 프로젝트에서 yml profile 설정 (2) | 2022.12.13 |
---|---|
[면접 준비 - Spring]JUnit, Hamcrest, Assertion (0) | 2022.12.13 |
[면접 준비 - Spring]트랜잭션(Transaction)에 대하여 (0) | 2022.12.13 |
[면접 준비 - Spring]DTO에 관하여 (0) | 2022.12.13 |
[면접 준비 - Spring]ResponseEntity에 대하여 (0) | 2022.12.13 |
[면접 준비 - Spring]Spring MVC의 REST API 엔드포인트 (1) | 2022.12.13 |
- Total
- Today
- Yesterday
- 여행
- 세모
- 야경
- spring
- Backjoon
- a6000
- 유럽여행
- 스트림
- Python
- 알고리즘
- 리스트
- BOJ
- 세계일주
- Algorithm
- 자바
- 기술면접
- 백준
- 유럽
- 면접 준비
- 중남미
- 세계여행
- 스프링
- 남미
- java
- 맛집
- 파이썬
- 지지
- 칼이사
- RX100M5
- 동적계획법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |