ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] JPA (Java Persistence API)
    자바/기타 2021. 3. 23. 10:07

    ORM (Object-Relation Mapping, 객체-관계 매핑) vs SQL Mapper

    • ORM은 DB 테이블을 자바 객체로 매핑함으로써 객체관의 관계를 바탕으로 SQL을 자동으로 생성하지만, Mapper는 SQL을 명시해주어야 한다.
    • ORM은 RDB의 관계를 Object에 반영하는 것이 목적이라면, Mapper는 단순히 필드를 매핑시키는 것이 목적이라는 점에서 지향점의 차이가 있다.

     

    JPA (Java Persistence API)

    • 자바 ORM 기술의 표준 명세로, 스프링에서 제공하는 것이 아닌 JAVA에서 제공하는 API이다.
    • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다.
    • 스프링의 PSA(POJO를 사용하면서 특정 기술을 사용)에 의해서 표준 인터페이스를 정해두었는데, 그 중 ORM을 사용하기 위해 만든 인터페이스

     

    Spring Data JPA

    • JPA는 ORM을 위한 자바 EE표준이며 Spring-Data-JPA는 JPA를 쉽게 사용하기 위해 스프링에서 제공하는 프레임워크이다.
    • Hibernate를 직접 쓰지 않고 Spring Data JPA를 사용하는 이유?
      • 구현체 교체의 용이성
        • ex) 자바의 Redis 클라이언트가 Jedis에서 Lettuce로 넘어갈 때 Spring Data Redis를 사용하면 쉽게 교체가 가능
      • 저장소 교체의 용이성
        • ex) Spring Data JPA, Spring Data MondoDB, Spring Data Redis등 Spring Data 하위 프로젝트들은 동일한 인터페이스를 가지고 있기 때문에 저장소를 교체해도 기본적인 기능이 변하지 않음
    • JPA 특징
      • SQL 중심적인 개발에서 객체 중심적인 개발이 가능
      • 생산성이 증가
      • 유지보수가 쉽다.
        • 기존 : 필드 변경 시 모든 SQL을 수정
        • JPA : Entity 객체의 필드만 변경
      • Object와 RDB 간의 패러다임 불일치 해결

    하이버네이트

    • JPA가 DB와 자바 객체를 매핑하기 위한 인터페이스(API)를 제공한다면, 하이버네이트는 이 인터페이스를 구현한 것이다.
    • 하이버네이트가 지원하는 메서드 내부에서 JDBC API가 동작한다.

     

    용어 설명

    PSA (Portable Service Abstraction)

    • Service Abstraction : 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것
    • Portable Service Abstraction : Service Abstraction으로 제공되는 기술을 다른 기술 스택으로 바꿀 수 있는 확장성을 갖고 있는 것

     

    Framework vs Library

    • Framework : 소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
    • Library : 단순 활용이 가능한 도구들의 집합

     

    제어의 역전(Inversion Of Control)

    일반적으로 우리는 프로젝트를 생성하고 Main 함수를 만들어서 시작 지점을 형성합니다. 그리고 Main 함수에서 프로그램의 흐름을 정하는 것은 프로그래머의 몫으로 우리가 어떠한 순서를 부여하느냐에 따라서 흐름을 제어하는 것이 일반적인 사고 입니다.

    하지만 여기서 프레임워크는 일반적인 사고와 반대되는 모습을 보여주는데 실행의 흐름을 프레임워크 자체가 가지고 있어서 우리의 코드를 프레임워크안에 넣어서 개발을 진행해야 합니다.

    일반적으로 프로그래머가 가지고 있어야하는 제어의 권한을 프레임워크에게 주었기 때문에 우리는 이를 제어의 역전이라고 말합니다.

     

     

    참고

    mangkyu.tistory.com/4

    velog.io/@adam2/JPA%EB%8A%94-%EB%8F%84%EB%8D%B0%EC%B2%B4-%EB%AD%98%EA%B9%8C-orm-%EC%98%81%EC%86%8D%EC%84%B1-hibernate-spring-data-jpa

     

    '자바 > 기타' 카테고리의 다른 글

    [JAVA] 클래스의 구성 관계  (0) 2021.04.28
    [JAVA] OAuth2  (0) 2021.03.24
    [JAVA] WebSocket  (0) 2021.03.22
    [UML] 유스케이스 다이어그램  (0) 2021.02.02
    [JAVA] 멀티 모듈 프로젝트 구성  (0) 2020.09.21

    댓글

Designed by Tistory.