
JPA를 사용하는 이유
JPA는 CRUD 쿼리를 직접 작성할 필요가 없습니다. 또한, 부모-자식 관계 표현, 1:N 관계 표현, 상태와 행위를 한 곳에서 관리하는 등 객체지향 프로그래밍을 쉽게 할 수 있다는 장점이 있습니다. 즉 SQL이 아닌 객체 중심으로 개발이 가능합니다. 추가적으로 관계 매핑이 어렵거나 성능에 대한 이슈가 우려되는 경우 네이티브 SQL 이란 기능을 제공하는데, 이는 SQL을 직접 작성하여 사용할 수 있습니다.
JPA, Hibernate, Spring Data JPA?
JPA(Java Persistence API)는 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스로서 자바 표준명세서입니다.
ORM: 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 것을 말한다.
JPA는 인터페이스이기에 따로 구현이 없습니다. 그렇기에 JPA를 사용하기 위해서는 구현체가 필요합니다.
구현체는 대표적으로 Hibernate, EclipseLink, DataNucleus가 있습니다.
JPA와 Hibernate의 관계는 interface와 해당 interface를 구현한 class와 같은 관계입니다.
Spring에는 Hibernate 같은 구현체들을 한 단계 더 추상화시킨 Spring Data JPA라는 모듈이 있습니다.
Spring Data JPA를 사용하면 더욱 간단하게 데이터 접근이 가능합니다.
JPA <-- Hibernate <-- Spring Data JPA
Hibernate와 Spring Data JPA를 사용함에는 큰 차이가 없지만 Spring Data JPA 사용을 권장하는 이유는 다음과 같습니다.
- 구현체 교체의 용이성 : Hibernate가 수명을 다해 새로운 JPA 구현체가 떠오를 때, Spring Data JPA를 쓰는 중이면 쉽게 교체할 수 있습니다.
- 저장소 교체의 용이성 : 관계형 데이터베이스 외에 다른 저장소로 쉽게 교체 가능합니다.
기존에 JPA를 사용하려면 EntityManager를 주입받아 사용해야 하지만, Spring Data JPA는 JPA를 추상화시킨 Repository 인터페이스를 제공하므로 사용자가 Repository 인터페이스에 정해진 규칙대로 메서드를 입력하면, Spring이 알아서 해당 메서드 이름에 적합한 쿼리를 날리는 구현체를 만들어서 Bean으로 등록해 줍니다.
'Spring' 카테고리의 다른 글
[Spring] Spring Data JPA 페이징 처리 알아보기 (2) | 2023.10.03 |
---|---|
[Spring] Spring Security와 OAuth 2.0으로 구글 소셜 로그인 구현(1) (0) | 2023.08.11 |
[Spring] Build.Gradle 공부하기 (0) | 2023.07.28 |
[Spring] Swagger 사용하기 (0) | 2023.06.14 |
[Spring] 엔티티에 생성일자 및 수정일자 칼럼 간편히 추가하기 (0) | 2023.06.12 |
느리더라도 단단하게 성장하고자 합니다!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!