JPA, ORM, Hibernate, Spring Data JPA 개념 정리

LeeYulhee·2023년 8월 26일
0

👉 ORM(Object-Relational Mapping)


  • 설명
    • 객체와 관계형 데이터베이스의 테이블 간의 매핑을 의미
      • 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법
  • 목적
    • 객체 지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치 문제를 해결하기 위함
    • ORM을 통해 개발자는 SQL 쿼리 작성 없이 데이터베이스와 상호작용할 수 있게 해 줌
    • 객체 지향 프로그램에서 데이터베이스를 쉽게 다룰 수 있게 해 줌
  • 장점
    • SQL을 직접 사용하지 않고 사용하는 언어로 데이터베이스에 접근할 수 있음
    • 객체지향적으로 코드를 작성할 수 있기 때문에 비즈니스 로직에만 집중할 수 있음
    • 데이터베이스 시스템이 추상화되어 있기 때문에 데이터베이스 시스템 간의 이동이 쉬워짐
    • 매핑하는 정보가 명확하기 때문에 ERD에 대한 의존도를 낮출 수 있고 유지보수 할 때 유리
  • 단점
    - 프로젝트의 복잡성이 커질수록 사용 난이도가 올라감
    - 자동 생성된 SQL이 항상 최적화된 것은 아님
    - ORM 동작 방식이 불투명할 수 있어 문제 해결이 어려울 수 있음
    - 복잡하고 무거운 쿼리는 ORM으로 해결 불가능한 경우도 있음



👉 JPA(Java Persistence API)


  • 설명
    • Java의 ORM 표준 명세
    • Java 애플리케이션에서 관계형 데이터베이스의 데이터를 표현하고 접근하기 위한 API
    • Java에서 ORM을 어떻게 구현할 것인가에 대한 명세를 제공하며, 이 명세를 따르는 여러 구현체가 있음
  • 목적
    - 객체와 테이블 간의 매핑을 쉽게 해주며, 데이터베이스와의 상호작용을 추상화하여 개발자가 데이터베이스 SQL에 의존적이지 않도록 도움



👉 Hibernate


  • 설명
    • JPA의 구현체 중 하나로, ORM 프레임워크
    • JPA 명세를 준수하여 ORM 기능을 제공하는 라이브러리
    • JPA를 기반으로 하면서도 Hibernate만의 추가적인 기능과 확장성을 제공
  • 특징
    - Hibernate는 JPA의 표준 스펙을 준수하며, 그 이외에도 추가적인 기능들을 제공
    - 예를 들면, Lazy loading, caching, 쿼리 통계 및 최적화 도구 등이 있음



👉 Spring Data JPA


  • 설명
    • Spring 프레임워크에서 제공하는 데이터 접근 계층을 위한 프로젝트 중 하나로, JPA를 추상화하여 더 쉽게 사용할 수 있게 해주는 라이브러리
    • Spring 환경에서 JPA (예: Hibernate)를 쉽게 사용하기 위한 도구 및 추상화 라이브러리
      • Hibernate와 같은 JPA 구현체와 연동하여 작동
  • 특징
    • Repository 인터페이스만 정의하면 기본 CRUD 연산을 제공
    • 쿼리 메소드 기능
      • 메소드 이름만으로 쿼리를 생성하는 기능을 제공
        • 예: findByName, findByAgeGreaterThan 등
    • 페이징 및 정렬, 집합적인 데이터베이스 연산 등 다양한 기능을 제공
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글