본문 바로가기
웹 개발/jpa

[jpa] JPA란? ORM, Hibernate란?

by dani0312 2023. 12. 12.

📌 JPA란

◾ JPA란?

- JPA 는 Java Persistence API의 약자

- 자바 진영의 ORM 기술 표준

- 애플리케이션과 JDBC사이에서 동작한다.

 

JPA는 자바에서 표준으로 사용되는 ORM기술이다. 이 JPA를 이용하면 기존의 SQL개발의 무한 반복적인 쿼리문을 작성해야하는 문제점, 패러다임의 불일치 등을 해결해준다. ORM기술이 무엇인지는 아래 단락을 참고하자

출처: 김영한 자바 ORM 표준 JPA


위 그림처럼 JPA는 자바 애플리케이션과 JDBC사이에서 동작한다. 동작방식은 아래와 같이 이루어진다.

개발자가 JPA에게 명령을 한다. 👉 JPA가 JDBC API 사용하여 SQL호출 👉 DB로부터 결과를 받아 동작

 

 

 

◾ ORM이란?

- Object Realtional Mapping(객체 관계 매핑)

- 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계하고 ORM 프레임워크가 중간에서 매핑한다.

- 대중적인 언어는 대부분 ORM 기술이 존재한다. 

   > 자바도 대중적 언어이므로 ORM기술들이 존재한다.

 

쉽게 말해서 ORM은 양쪽 기술을 연결해주는, 중간에 끼인 기술이다. 그리하여 JPA는 자바 객체와 데이터베이스 테이블 간의 매핑을 제공하여 객체 지향 프로그래밍에서의 개념과 데이터베이스 간의 상호작용을 쉽게 하도록 해준다.

 

ORM프레임워크는 단순히 SQL을 개발자 대신 생성해 데이터베이스에 전달해주는 것뿐 아니라 다양한 패러다임의 불일치도 해결해준다.

 > 객체 측면에서는 정교한 객체 모델링을 할 수 있고 관계형 데이터베이스는 데이터베이스에 맞도록 모델링만 하면 된다.

> 둘을 어떻게 매핑해야하는지 매핑 방법만 ORM 프레임워크에게 알려주면 된다. 

 

 

📌JPA의 역사

◾ JPA 탄생과 Hibernate

과거 자바 진영에서는 Enterprise Java Beans(EJB)라는 기술 표준이 존재했고 그 안에는 엔티티 빈이라는 ORM기술도 포함되어 있었으나 너무 복잡하고 기술의 성능도 좋지 않았다.

 

그러던 중 개빈 킹에 의해 가볍고, 실용적이며 기술 성숙도도 높은 하이버네이트라는 오픈소스 ORM프레임워크가 등장하게 된다. 오픈 소스지만 개발자들의 열광으로 발전을 하여 널리 쓰이게 되었고 결국 자바 진영에서 하이버네이트 창시자인 개빈 킹을 데리고 자바 ORM의 새로운 표준을 만들게 된다. 하이버네이트가 오픈소스로 시작했지만 표준으로 만들어지며 JPA표준에 맞춰 용어나 기술들도 정제, 컨버팅되어 개발을 하게 된다. 그리하여 JPA가 만들어지게 되었고 JPA는 시간이 지날수록 더욱 더 널리 쓰이고 있다. 

 

 

JPA를 사용하기 위해서는 JPA를 구현한 ORM 프레임워크를 선택해야 하며, 하이버네이트가 가장 대중적이므로 하이버네이트를 사용하는 것을 권한다.

 

 

 

◾JPA 버전별 특징

JPA의 버전별 특징은 다음과 같다. 2.0 버전 이전에는 부족했던 기능들이 다소 있었으나 2.0버전에서 대부분의 ORM기능을 포함하게 되었다.

 

- JPA 1.0(JSR 220) 2006년 : 초기 버전. 복합 키와 연관관계 기능이 부족

- JPA 2.0(JSR 317) 2009년 : 대부분의 ORM 기능을 포함, JPA Criteria 추가

- JPA 2.1(JSR 338) 2013년 : 스토어드 프로시저 접근, 컨버터(Converter), 엔티 티 그래프 기능이 추가

 

 

 

 


출처/참고 

자바 ORM 표준 JPA 프로그래밍 - 기본편 / 김영한 / 인프런 강의

 https://ssdragon.tistory.com/51


/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */