ORM, Hibernate, JPA

0

개념정리

목록 보기
29/33

ORM

: Object Relational Mapping
-> 객체와 entity간의 매핑

  • 객체RDBMS Entity매핑을 도와주는 기술.
    자바 기반 ORM을 구현해놓은 대표적인 프레임워크하이버네이트(Hibernate)이다.

Hibernate

  • hibernate는 처음엔 쉽지만 좀더들어가면 학습곡선이 높다.
  • EJB Entity bean (너무 무거워서 잘안씀)에서 출발해서 하이버네이트로 발전한 것이다.
  • Hibernate가 테이블들을 조인을 많이 하기위해서는 그에 해당하는 자바 객체들을 모두 매핑하기 위해 has-a관계로 다 설정 즉, 클래스간의 설계를 잘해야 하는데 그걸 잘하기가 어렵고, 복잡하다보니 많은 사람들이 Hibernate를 공부하기가 어려웠고, 잘 안쓰게 됐음.

  • 그러다가 Monolithic -> Micro하게 여러개 방식으로 유행이 바뀌게되고, Micro하게 서비스를 만들다 보니 전보다 매핑이 복잡하지 않아도 되다보니 Hibernate가 다시 각광받고 있다. (package를 나눠서 설계하는 방식)
    • 원래는 한 서비스에서 테이블을 5개씩 join을 해야했다면, 조각내서(micro) 하면 테이블에 2~3개 정도 join을 하면 됨
  • 이후로 MSA시장(클라우드시장)이 활성화 되다 보니까 join이 어렵지 않게돼서 hibernate를 사용하려 했는데,
    여기서 문제는 spring에서 hibernate를 쓰기 어려웠다 -> hibernate를 좀 더 편하게 쓰기위한 기술이 나옴(발전)
    -> Spring용 JPA
  • JPA를 뜯어보면 hibernate를 쓰고 있는 것을 알 수 있다.
  • JPA 새로운 기술은 아니고 EJB(2000년대 초반)에서 부터 약간씩 방법이 바뀌면서 흘러들어온 애임.
    -> 모든 기술들이 다 반짝 갑자기 생긴것들은 아니고, 다 세월이 흐르면서 조금씩 형태를 바꿔 생겼다는 것을 알았으면 좋겠다. 배워서 쓸모없는 기술은 없다.

JPA(JavaPersistenceAPI)

: 자바 ORM기술에 대한 표준명세, API이다!

  • Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용하는 인터페이스 모음
    : Hibernate(프레임워크)는 JPA의 구현체이다.
  • 스프링에서 흔히 사용하는 것으로 알고있는 JPA는, JPA를 이용하는 spring-data-jpa 프레임워크이지 JPA는 아니다.
  • JPA를 공부하기 전에 Hibernate의 LifeCycle을 알아야함.

Spring-Data-JPA

: spring framework에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트

  • CRUD 처리를 위한 공통 인터페이스 제공
  • repository 개발 시 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입
  • 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있도록 지원
  • 공통 메소드는 스프링 데이터 JPA가 제공하는 org.springframework.date.jpa.repository.JpaRepository인터페이스에
    count, delete, deleteAll, deleteAll, deleteById, existsById, findById, save ..
  • mybatis는 entity(DB테이블의 한 행)와 자바객체를 매핑해주기 위해서 sql구문을 사용한다.
    -> ORM은 sql사용없이 자바객체와 entity를 매핑해줘야함
    -> mybatis는 ORM이 아니야!

출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글