Programming/Spring

[Spring/스프링] Persistence Layer를 위한 JDBC, JPA

예민한고라니 2022. 3. 6. 01:37

 

  • 지금까지 공부했던 내용은  '메모리에 데이터를 임시 저장'하여 테스트에 사용 하는 비영속적인 방식이었다.
  • 이에 이번 게시글에서는 관계형 데이터베이스 등을 활용하여, 데이터를 영구적으로 DB에 저장하여 영속성을 부여하는 몇가지 방법에 대해 설명할 것이다.

 

 

JDBC 란 무엇인가요?

  • JDBC의 사전적 정의는 ‘자바에서 DB에 접속할수 있도록 하는 자바 API’로 , 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공한다
  • 이와 관련 한 이야기에 앞서, 프로그램의 아키텍처에서 영속성을 부여해주는 Persistence Layer라는 계층이 존재한다

출처 : https://dzone.com/articles/spring-boot-architecture-and-workflow

  •  Persistence Layer 계층을 구현하는데 사용되는 것이 바로 JDBC이다!
  • 하지만 최근의 모든 Java Data Access 기술의 내부적으로 JDBC API를 사용하기 때문에 Persistence framework를 이용하여 비교적 쉽게 구현이 가능하다

 

 

"두가지 대표적인 Persistence Framework 에 대해 이야기 해봅시다!"

1. ORM 이란? 

    • ORMObject Relational Mapping의 약자로, 객체와 관계형 데이터베이스의 데이터를 자동으로 맵핑 해주는 것을 의미한다.
    • 맵핑은 왜 필요할까? 이는 객체지향 프로그래밍 언어인 자바는 클래스를 사용하고, 관계형 DB는 테이블을 사용하기 때문에, 객체모델과 관계형 모델 간에는 불일치가 존재할 수 밖에 없다.
  • 이에 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결 하는 것!
  • 대표적인 ORM 방식의 Persistence Framework로 JPA가 존재한다.

2. SQL Mapper 란?

  • 객체와 SQL의 필드를 맵핑하여 데이터를 객체화하는 기술
  • ORM처럼 객체와 테이블간의 관계를 매핍하는 것이 아닌, SQL을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에 매핑하여 줄지 바인딩하는 방법으로 SQL에 의존적이다!
  • 대표적인 프레임워크로 JdbcTemplate, Mybatis가 있다.

 

 

참고. 스프링 데이터 JPA

  • 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 도와주는 기술
  • 스프링 부트와 JPA만 사용해도 개발 생산성이 많이 증가하고 개발해야할 코드도 확연히 줄어 든다!
  • 여기에 스프링 데이터 JPA를 하용하면 레포지토리에 구현 클래스 없이 인터페이스 만으로도 개발을 완료 할 수있다

 


참고한 강의 

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

그리고 게시물들 

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