Programming/Spring
[Spring/스프링] Persistence Layer를 위한 JDBC, JPA
예민한고라니
2022. 3. 6. 01:37
- 지금까지 공부했던 내용은 '메모리에 데이터를 임시 저장'하여 테스트에 사용 하는 비영속적인 방식이었다.
- 이에 이번 게시글에서는 관계형 데이터베이스 등을 활용하여, 데이터를 영구적으로 DB에 저장하여 영속성을 부여하는 몇가지 방법에 대해 설명할 것이다.
JDBC 란 무엇인가요?
- JDBC의 사전적 정의는 ‘자바에서 DB에 접속할수 있도록 하는 자바 API’로 , 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공한다
- 이와 관련 한 이야기에 앞서, 프로그램의 아키텍처에서 영속성을 부여해주는 Persistence Layer라는 계층이 존재한다
- Persistence Layer 계층을 구현하는데 사용되는 것이 바로 JDBC이다!
- 하지만 최근의 모든 Java Data Access 기술의 내부적으로 JDBC API를 사용하기 때문에 Persistence framework를 이용하여 비교적 쉽게 구현이 가능하다
"두가지 대표적인 Persistence Framework 에 대해 이야기 해봅시다!"
1. ORM 이란?
- ORM은 Object Relational Mapping의 약자로, 객체와 관계형 데이터베이스의 데이터를 자동으로 맵핑 해주는 것을 의미한다.
- 맵핑은 왜 필요할까? 이는 객체지향 프로그래밍 언어인 자바는 클래스를 사용하고, 관계형 DB는 테이블을 사용하기 때문에, 객체모델과 관계형 모델 간에는 불일치가 존재할 수 밖에 없다.
- 이에 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것!
- 대표적인 ORM 방식의 Persistence Framework로 JPA가 존재한다.
2. SQL Mapper 란?
- 객체와 SQL의 필드를 맵핑하여 데이터를 객체화하는 기술
- ORM처럼 객체와 테이블간의 관계를 매핍하는 것이 아닌, SQL을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에 매핑하여 줄지 바인딩하는 방법으로 SQL에 의존적이다!
- 대표적인 프레임워크로 JdbcTemplate, Mybatis가 있다.
참고. 스프링 데이터 JPA
- 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 기술
- 스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고 개발해야할 코드도 확연히 줄어 든다!
- 여기에 스프링 데이터 JPA를 하용하면 레포지토리에 구현 클래스 없이 인터페이스 만으로도 개발을 완료 할 수있다
참고한 강의
그리고 게시물들
https://gmlwjd9405.github.io/2018/12/25/difference-jdbc-jpa-mybatis.html
https://gmlwjd9405.github.io/2019/02/01/orm.html
https://deveun.tistory.com/entry/SQL-Mapper%EC%99%80-ORM-%EC%B0%A8%EC%9D%B4