JPA에 대해 다시 한 번 돌아보자!
JPA를 학습한지 어언 한달이 지났다.
하지만, JPA를 이해하고 설명하는 것이 너무나도 어렵게 느껴진다. 따라서, JPA에 대해서 심도 있게 다뤄보며 JPA가 결과적으로 추구하는 목적과 JPA를 활용하는 방법에 대해서 고민해보려고 한다.
Java Persistence API
기술의 이름에는 해당 기술이 최종적으로 추구하는 목표를 나타내거나 그 기술의 대표적인 특징을 나타낸다. JPA는 영속성을 가지는 자바 애플리 케이션이다. 즉, JPA는 인메모리에 저장하여 종료하면 사라지는 데이터가 아닌, 종료가 되어도 계속해서 저장되어 있는 데이터이다.
JPA는 기술 명세서다.
JPA에 대해 정확한 개념을 잡기 위해 블로그를 찾아보던 중 내가 가지고 있는 고민을 말끔하게 씻어주는 글을 보게 되었다. JPA는 왜 EntityManager를 활용한 기술이라고 하면서 정작 Repository 인터페이스를 주로 사용하는 것인가?
막상 JPA를 열어보면 JPA는 interface, enum, Exception을 비롯한 Annotation으로 이루어져있다는 것을 알 수 있다.
특히, EntityManager는 javax.persistence.EntityManager에 interface로 정의되어 있다.
Hibernate와의 연관성

Hibernate는 JPA의 구현체이다. 구현체는 "인터페이스를 구현한 클래스"라는 뜻이니, HIbernate는 JPA의 구현 클래스가 되는 것이다. 물론 구현체는 Hibernate외 에도 DataNucleus, EclipseLink 등 다양하게 있다.

사진과 같이 Hibernate에서는 interface들을 상속받고 Impl로 구현하고 있음을 알 수 있다.
'개발일지 > Today I Learn' 카테고리의 다른 글
[ 개발 일지 ] IT 채용 한파와 비전공자 개발자의 준비 (1) | 2023.07.17 |
---|---|
[ TIL ] 명령형 프로그래밍과 선언형 프로그래밍 (0) | 2022.11.29 |
[ TIL ] Spring Data JPA에서 save() 메서드의 쓰임 (0) | 2022.11.22 |
[ TIL ] 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) (0) | 2022.11.22 |
[ TIL ] SSR 방식과 CSR 방식의 차이 (0) | 2022.11.21 |
JPA에 대해 다시 한 번 돌아보자!
JPA를 학습한지 어언 한달이 지났다.
하지만, JPA를 이해하고 설명하는 것이 너무나도 어렵게 느껴진다. 따라서, JPA에 대해서 심도 있게 다뤄보며 JPA가 결과적으로 추구하는 목적과 JPA를 활용하는 방법에 대해서 고민해보려고 한다.
Java Persistence API
기술의 이름에는 해당 기술이 최종적으로 추구하는 목표를 나타내거나 그 기술의 대표적인 특징을 나타낸다. JPA는 영속성을 가지는 자바 애플리 케이션이다. 즉, JPA는 인메모리에 저장하여 종료하면 사라지는 데이터가 아닌, 종료가 되어도 계속해서 저장되어 있는 데이터이다.
JPA는 기술 명세서다.
JPA에 대해 정확한 개념을 잡기 위해 블로그를 찾아보던 중 내가 가지고 있는 고민을 말끔하게 씻어주는 글을 보게 되었다. JPA는 왜 EntityManager를 활용한 기술이라고 하면서 정작 Repository 인터페이스를 주로 사용하는 것인가?
막상 JPA를 열어보면 JPA는 interface, enum, Exception을 비롯한 Annotation으로 이루어져있다는 것을 알 수 있다.
특히, EntityManager는 javax.persistence.EntityManager에 interface로 정의되어 있다.
Hibernate와의 연관성

Hibernate는 JPA의 구현체이다. 구현체는 "인터페이스를 구현한 클래스"라는 뜻이니, HIbernate는 JPA의 구현 클래스가 되는 것이다. 물론 구현체는 Hibernate외 에도 DataNucleus, EclipseLink 등 다양하게 있다.

사진과 같이 Hibernate에서는 interface들을 상속받고 Impl로 구현하고 있음을 알 수 있다.
'개발일지 > Today I Learn' 카테고리의 다른 글
[ 개발 일지 ] IT 채용 한파와 비전공자 개발자의 준비 (1) | 2023.07.17 |
---|---|
[ TIL ] 명령형 프로그래밍과 선언형 프로그래밍 (0) | 2022.11.29 |
[ TIL ] Spring Data JPA에서 save() 메서드의 쓰임 (0) | 2022.11.22 |
[ TIL ] 체크 예외(Checked Exception)와 언체크 예외(Unchecked Exception) (0) | 2022.11.22 |
[ TIL ] SSR 방식과 CSR 방식의 차이 (0) | 2022.11.21 |