https://product.kyobobook.co.kr/detail/S000001019679
이번 방학동안 제일 열심히 공부한 부분이 JPA이다. 방학동안 진행한 프로젝트 또한 Spring Dataa JPA를 이용했다.
이 글에는 JPA에 대해 복습을 한번 하고 이 책의 예제를 JPA로 구현해 볼 것이다.
JPA에 대해 자세한 내용은 JPA 공부 여기 정리했다. 이 부분은 인프런 강의를 듣고 정리한 내용이다.
Spring Data JPA를 사용해야 하는 이유
자바는 전형적인 객체지향 프로그래밍이다. 하지만 SQL은 테이블 모델링에 집중 되어 있다. 자바에서 SQL을 연동해 쓸려면 객체지향적 프로그래밍에서 테이블 모델링을 집중해 코드를 짜야하는 단점이 존재했다.
이런 단점이 생기는 이유는 객체를 관계형 데이터베이스에서 관리할려고 했기 때문이다. SQL을 사용하면 반복적으로 코드를 짜야하고 양도 많아지게 된다. 또, 단점이 존재한다. 바로 패러다임 불일치이다.
관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이다. 하지만 객체지향 프로그래밍 언어는 기능과 속성을 한 곳에서 관리하는 기술이다. 그러므로 관계형 데이터베이스에서 객체지향을 표현하기란 어렵다.
책에서 나온 예시를 살펴보자면
User user = findUser();
Group group = user.getGroup();
객체지향적으로 위 코드를 살펴보면 누가봐도 user와 group은 부모 자식 관계이다. 하지만 여기에 데이터베이스를 추가한다면
User user = userDao.findUser();
Group group = groupDao.findGroup(user.getGroupId());
user 따로 조회하고 group 따로 조회하게 된다. user와 group이 어떤 관계인지 파악하기가 어렵다.
JPA가 바로 이 부분들을 해결해 준다.
즉, 지향하는 바가 다른 2개 영역을 중간에서 패러다임 일치를 시켜주기 위한 기술이다.
개발자는 객체지향적으로 프로그래밍을 하고, JPA가 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성해서 실행한다.
그러므로 더는 SQL에 종속적인 개발을 하지 않아도 된다.
Spring Data JPA 장점
JPA는 hibernate에서 파생된 것 이다. Spring Data JPA는 JPA를 Spring에 최적화하게 만들어 논 것이다. 스프링 진영에서는 Spring Data JPA를 권장하고 있다.
구현체 교체의 용이성
Hibernate 외에 다른 구현체로 쉽게 교체할 수 있다. Spring Data JPA 내부에서 구현체 매핑을 지원해주기 때문에 쉽게 다른 것으로 교체할 수 있다.
저장소 교체의 용이성
관계형 데이터베이스 외에 다른 저장소로 쉽게 교체할 수 있다. 만약 MongoDB로 교체할려면 Spring Data JPA에서 Spring Data MongoDB로 의존성만 교체하면 된다.
Spring Data의 하위 프로젝트들은 기본적인 CRUD의 인터페이스가 같다.
그러다 보니 저장소가 교체되어도 기본적인 기능은 변경할 것이 없다.
'토이프로젝트 > 스프링 부트로 구현한 웹' 카테고리의 다른 글
머스테치로 화면 구성하기(2) 등록, 조회 (0) | 2023.03.03 |
---|---|
머스테치로 화면 구성하기(1) (0) | 2023.03.03 |
JPA를 사용한 게시판 구현(2) - 등록/수정/조회 API 만들기 (1) | 2023.02.28 |
JPA를 사용한 게시판 구현(1) (1) | 2023.02.27 |
스프링 부트에서 테스트 코스 작성하기 (0) | 2023.02.26 |