[ShowMyCNFT] JPA

junghan·2023년 4월 6일
0

SpringBootProject

목록 보기
17/35
post-thumbnail

JPA란?

JPA (Java Persistence API)는 Java에서 ORM (Object-Relational Mapping) 기술을 지원하기 위해 만들어진 인터페이스입니다. JPA는 ORM 프레임워크와의 통합을 쉽게 할 수 있도록 제공됩니다.


JPA가 나오게된 배경

JPA는 Java EE 5 버전부터 추가되었으며, 이전에는 Java 애플리케이션에서 ORM을 사용할 때 자체적으로 구현해야 했습니다. 이는 복잡하고 번거로운 일이었기 때문에, JPA는 ORM의 표준 인터페이스를 제공함으로써 개발자들이 ORM을 쉽게 사용할 수 있도록 도왔습니다.

1. 단순 반복 작업

현대의 웹 애플리케이션에서 관계형 데이터베이스는 빠질 수 없는 요소입니다. 그러다 보니 객체를 관계형 데이터 베이스에서 관리하는 것이 무엇보다 중요합니다. 관계형 데이터베이스가 계속해서 웹 서비스의 중심이 되면서 모든 코드는 SQL중심이 되어갑니다.
현업 프로젝트 대부분이 애플리케이션 코드보다 SQL로 가득하게 된 것입니다.

이는 관계형 데이터베이스가 SQL만 인식할 수 있기 때문인데, SQL로만 가능하니 각 테이블마다 기본적인 CRUD (Create ,Read ,Update ,Delete) SQL을 매번 생성해야 합니다.

2. 패러다임 불일치

관계형 데이터베이스는 어떻게 데이터를 저장 할지에 초점이 맞춰진 기술입니다.
반대로 객체지향 프로그래밍 언어는 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술입니다.
상속, 1:N 등 다양한 객체 모델링을 데이터베이스로는 구현할 수 없습니다. 그러다 보니 웹 애플리케이션 개발은 점점 데이터 베이스 모델링에만 집중하게 됩니다. JPA는 이런 문제점을 해결하기 위해 등장하게 됩니다.


Spring Data JPA

JPA는 인터페이스로서 자바 표준명세서입니다. 인터페이스인 JPA 를 사용하기 위해서는 구현체가 필요합니다. 대표적으로 Hibernate , Eclipse Link 등이 있습니다. 하지만 Spring에서 JPA를 사용할 때는 이 구현체들을 직접 다루진 않습니다.

Spring Data JPA를 사용하는 이유

  1. 구현체 교체의 용이성
    Hibernate 가 언젠간 수명을 다해서 새로운 JPA 구현체가 대세로 떠오를 때, Spring Data JPA 를 쓰는 중이라면 아주 쉽게 교체할 수 있습니다. Spring Data JPA 내부에서 구현체 매핑을 지원해주기 때문입니다. 실제로 자바의 Redis 클라이언트가 Jedis 에서 Lettuce로 대세가 넘어갈 때 Spring Data Redis를 쓰신 분들은 아주 쉽게 교체를 했습니다.

  2. 저장소 교체의 용이성
    관계형 데이터베이스 외에 다른 저장소로 쉽게 교체하기 위함입니다.
    서비스 초기에는 관계형 데이터베이스로 모든 기능을 처리했지만, 점점 트래픽이 많아져 관계형 데이터베이스로는 도저히 감당이 안 될 때가 올 수 있습니다. 이때 MongoDB 로 교체가 필요하다면 개발자는 Spring Data JPA 에서 Spring Data MongoDB로 의존성만 교체 하면 됩니다.

또한, Spring Data JPA는 JPA의 기능에 더하여, Spring Framework의 특징인 의존성 주입(Dependency Injection) 및 AOP (Aspect-Oriented Programming)을 활용하여 보다 쉽게 개발할 수 있도록 도와줍니다.
Spring Data JPA는 또한 쿼리 메서드 기능을 제공하여, 개발자가 별도로 쿼리를 작성하지 않고도 쉽게 데이터를 검색할 수 있습니다.


출처 스프링 부트와 AWS로 혼자 구현하는 웹서비스 - 이동욱 저

profile
42seoul, blockchain, web 3.0

0개의 댓글