[DB] ORM, Hibernate, JPA, QueryDSL

홍예진·2023년 1월 10일
0

🍖DB

목록 보기
3/3

ORM(Object Relational Mapping)

  • 객체-관계 매핑

Hibernate

ORM 기술에 대한 명세인 JPA(Java Persistence API) 구현체의 한 종류

  • 자바를 위한 ORM 프레임워크
  • JPA의 구현체로, JPA 인터페이스를 구현하며, 내부적으로 JDBC API를 사용한다.

JPA

  • 자바 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
  • ex) Hibernate, DataNucleus, EclipseLink

JDBC

  • 자바 프로그래밍 언어와 다양한 데이터베이스 SQL 또는 테이블 형태의 데이터 사이에 독립적인 연결을 지원하는 표준. = DB작업을 위한 표준.

Hibernate의 장점

생산성

  • 메소드 호출만으로 쿼리가 수행됨. SQL 반복작업 X -> 생산성 Up

유지보수

  • 테이블 컬럼이 변경되었을 때, 테이블과 관련된 DAO의 파라미터 결과, SQL등을 대신 수행해줌. 유지보구 측면 Up

특정 벤터에 종속X

  • JPA는 추상화된 데이터 접근 계층을 제공 -> 종속X
  • 설정 파일에서 JPA에게 어떤 DB를 사용하고 있는지를 알려주기만 하면 얼마든지 DB를 바꿀 수 있음

패러다임 불일치 해결

  • 상속, 연관 관계, 객체 그래프 탐색, 비교 등 객체와 관계형 데이터 베이스와의 패러다임 불일치를 해결할 수 있다.

Hibernate의 단점

성능

세밀함

  • 메서드 호출만으로 DB 데이터를 조작하기에는 한계가 있음. 이를 보완하기 위해 JPQL을 지원.
  • NativeQuery를 지원하여 SQL자체 쿼리도 작성 가능

러닝커브

Spring Data JPA

  • JPA를 쓰기 편하게 만들어 놓은 모듈.
  • JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로 이루어짐. 이는 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 메소드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해줌.

QueryDSL

  • type-safe한 쿼리의 제작과 실행을 위해 사용하는 프레임워크
  • Spring으로 쿼리를 직접 작성할 때 발생할 수 있는 오타 혹은 잘못된 테이블의 참조, 낮은 가독성 등의 단점을 극복할 수 있게 도와줌.
  • QueryDSL을 사용하면 컴파일 시점에 선언한 Entity 클래스를 기반으로 Q클래스가 생성되므로, 더 안전한 데이터베이스 쿼리를 작성 가능

참고

https://livenow14.tistory.com/70

profile
기록용 공부용 개발 블로그

0개의 댓글