[JPA] ORM, JPA, Hibernate카테고리 없음2023. 7. 28. 10:36
Table of Contents
ORM (Object Relational Mapping)
객체가 테이블이 되도록 매핑시켜주어 자바 객체와 쿼리를 분리할 수 있으며 트랜잭션 처리나 기타 DB 관련 작업들을 간편하게 처리할 수 있게해주는 기술
JPA (Java Persistance API)
Java의 ORM 기술에 대한 API 표준 명세이며, JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이다.
즉, 사용하기 위해서는 구현체가 있어야한다.
장점 | 단점 |
데이터를 객체 지향적으로 관리할 수 있기 때문에 개발자가 비즈니스 로직에만 집중할 수 있다. | 학습 비용이 높다 |
SQL을 직접 작성하지 않아도 되며, 테이블 변경 시 Entity만 수정하면 된다. | 복잡한 쿼리가 필요한 경우 불편할 수 있다. |
DB에 대한 코드 종속성이 낮아 DB가 변경되더라도 JPA가 해당 DB에 맞는 쿼리를 자동으로 생성한다. | 잘못 사용 시 SQL 문을 작성한 것보다 성능이 저하될 수 있다. |
요약: 간편성, 코드 가독성, 확장성이 좋지만, 학습 난이도가 있고, 잘못 사용했을 경우 성능 저하로 이어진다.
Hibernate
JPA의 구현체로써 메소드 호출만으로 쿼리가 실행된다.
메소드로 쿼리를 실행하여 간편하게 사용할 수 있고, 테이블 관리가 편하며, 비즈니스 로직에 집중할 수 있다.
메소드만으로 쿼리를 실행하기 때문에 내부적으로 동작이 많아 네이티브 쿼리보다 성능이 떨어질 수 있다.
Spring Data JPA
JPA를 사용하기 위해서는 Hibernate 같은 구현체를 사용해야한다.
Spring Data JPA를 사용하면 Hibernate를 직접 다루지 않고, 구현체들을 좀 더 쉽게 사용할 수 있으며, 구현체를 바꿔야하는 상황이와도 쉽게 교체할 수 있다.
이처럼 JPA를 사용하는 가장 큰 이유 중 하나로 DB 또는 구현체를 바꿔야하는 상황이 와도 쉽게 교체할 수 있다는 점이다.
@뽀글뽀글 개발자 :: 뽀글뽀글 개발 일지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!