ABOUT ME

-

오늘
-
어제
-
-
  • SpringBoot - ORM, JPA의 개념
    Back-end/Spring 2020. 6. 28. 00:01

    ORM(Object-Relational Mapping)

    객체와 릴레이션을 Mapping(매핑)할 때 발생하는 개념적 불일치를 해결하는 프레임워크입니다.

    ORM에서 다루어지는 문제들

    • 객체는 크기가 굉장히 다양하지만 테이블은 테이블과 컬럼 밖에 없고 크기가 한정적이다.
    • 복잡한 객체의 다양한 크기들을 테이블에 맵핑을 시킬 수 있을 것인가에 대한 해결책을 제공한다.
    • 테이블은 상속이 없지만 객체들은 상속이 있음 클래스간에 상속구조를 만들 수 있는데 그런 상속구조를 테이블로는 어떻게 매핑할 것인가
    • Relational 에서 식별자는 굉장히 단순하다.
    • Object에서는 Identity는 Hashcode? equals Method?
    • Object Identity가 같으면 도대체 어떤 Entity가 같아야 우리는 객체가 같다고 해야되는건가?
    • 테이블에서는 식별자만 같으면 같은건데 Object에서는 그게 아님 프로퍼티만 같다고 해서 같은건가?
    • ID가 null이면 어떻게 되는거지?

    위와 같은 문제들이 다루어집니다.

    JPA(Java Persistence API)

    ORM을 손쉽게 구현하도록 만들어줍니다.

    • 대부분의 JPA스펙이 Hibernate에 기반해서 만들어집니다.(하지만 모든 기능을 커버하진 않아서 직접 Hibernate에 설정을 다루어야 합니다.)
    • ORM을 위한 자바(EE) 표준입니다.

    SpringData JPA

    JPA 표준 스펙을 아주쉽게 사용할 수 있도록 SpringData로 추상화 시켜놓은 것입니다.

    • JPA 의존성을 추가하면 SpringDataJDBC의 기능을 모두 다 사용할 수 있으면서 부가적으로 JPA, Hibernate, SpringDataJPA 기능을 더 사용할 수 있습니다.
    • SDJ(SpringDataJPA) -> JPA -> Hibernate -> Datasource(JDBC) 까지 의존성이 추가됩니다.

    'Back-end > Spring' 카테고리의 다른 글

    SpringBoot - 데이터베이스 초기화  (0) 2020.06.28
    SpringBoot - JPA 연동하기  (0) 2020.06.28
    SpringBoot - PostgreSQL  (0) 2020.06.27
    SpringBoot - DBCP, MySQL  (0) 2020.06.27
    SpringBoot - 인메모리 데이터베이스(H2)  (0) 2020.06.27

    댓글