[스프링] ORM, JPA, Hibernate, 스프링 데이터 JPA 개념 정리하기 🌿

코린이서현이·2024년 5월 4일
0

백엔드 공부

목록 보기
6/9
post-thumbnail

👏 들어오면서 👏

데이터 베이스에 올리기 위해서 여러 어노테이션을 알아보자. 
오래 걸리더라도 천천히 공부해서 잘 기억했으면 한다..ㅎㅎ
요즘은 다시 스트레스가 높아졌는데 스트레스는 공부와 운동을 하면 풀리니까 정말 다행 아닙니까??!?!

ORM, JPA, Hibernate, 스프링 데이터 JPA 개념 정리하기

어노테이션을 사용해서 데이터베이스에 올린 경험이 있는 사람은 연결이 정말 쉽다는 것을 느꼈을 것이다!! 🫶 
그런데 어떻게 이런 기능을 사용할 수 있는 것일까??
정답은 바로 스프링 데이터 JPA이다.

스프링 데이터 JPA는 SQL을 몰라도 데이터 베이스를 띄우고, 설계하고 사용할 수 있도록 하는 도구다. @Entity, @Id 와 같은 어노테이션을 사용하기 위해서는 JPA를 사용해야한다.

😯 자바 ORM 표준 기술 JPA?

자바 ORM 표준 기술이 JPA라는 이야기를 많이들 들어봤을 것이다.
그리고 스프링 데이터 JPA, Hibernate 까지!!
나도 많이 들어봤지만 셋의 정확한 차이까지는 모르고 있었다!!

간단하게 말하자면 JPA자바 애플리케이션에서 관계형 데이터 베이스를 사용하는 방식과 어노테이션을 정의한 인터페이스이다. 그리고 이 인터페이스를 구현한 구현체가 Hibernate이다. 스프링 데이터 JPA는 JAP를 쉽게 사용할 수 있도록 하는 프레임워크이다.

ORM 이란?

ORM이란, Object Relational Mapping으로 객체 지향 언어에서 관계형 데이터 베이스를 연결(매핑)하는 기술을 말한다.

🤔 왜 이런 매핑 기술이 필요할까??

바로 관계형 데이터 베이스와 객체 지향 언어사이에 차이가 존재하기 때문이다.

관계형 데이터 베이스는 테이블로 데이터를 표현한다. 그러나 객체지향은 클래스로 데이터를 표현한다. 이런 불일치를 해결하기 위해서 개발자는 SQL를 사용해야한다. 그러나 이런과정은 복잡하고 많은 비용을 필요로 한다. 이런 복잡한 과정을 단순하게 할 수 있도록 하는 것이 ORM 기술이다.

파이썬의 ORM은?

ORM 기술은 이런 관계형데이터베이스와 객체지향프로그래밍을 연결하는 기술을 총칭하는 것이다. 자바 진영에서 사용하는 ORM 기술의 인터페이스는 JPA다. 그렇다면 다른 객체지향언어의 ORM 기술은 무엇이 있을까??

파이썬도 ORM을 가능하게 하고, 구현하는 여러 라이브러리를 가진다. 대표적으로 SQLAlchemy, Django ORM, Peewee가 있다.

JPA란?

자바 진영에서 ORM의 표준 기술이다. 풀어서 말하면 관계형 데이터 베이스와 객체 지향 프로그래밍의 불일치를 해결하고 연결하는 기술의 표준 인터페이스이다.

인터페이스기 때문에 구현이 되어 있지 않다. JPA를 사용하기 위해서는 이를 구현한 라이브러리를 사용해야한다.

JAP는 불일치 해소와 연결을 위해 어노테이션, 캐싱, 트랜잭션 관리등을 정의한다.

Hibernate란?

JPA 인터페이스를 직접 구현한 라이브러리이다.
객체와 관계형 데이터 베이스를 자동으로 매핑해줘서 SQL을 사용하지 않아도 된다.
Hibernate는 JDBC API를 개발자가 직접 사용하지 않을 수 있도록 기능을 제공한다

스프링 데이터 JPA란?

자바 스프링 JPA는 객체지향프로그램의 특성을 잘 살리는 방향으로 JPA를 사용할 수 있도록 하는 프레임 워크이다.

따라서 JPA의 구현체의 변화에 영향받지 않도록 JPA의 구현체를 추상화하는 추상화 계층을 지원한다. 특히 JPA는 Repository 라는 인터페이스를 사용해 개발자 대신 구현체를 만들어주고 Bean으로 등록해주고, 쿼리를 자동으로 만들어준다.

🌿 공식 문서에서 설명하는 스프링 데이터 JPA

Spring Data 제품군의 일부인 Spring Data JPA를 사용하면 JPA 기반(Java Persistence API) 리포지토리를 쉽게 구현할 수 있습니다.

Spring Data JPA는 실제로 필요한 만큼의 노력을 줄여 데이터 액세스 계층 구현을 크게 개선하는 것을 목표로 합니다. 개발자로서 다양한 기술을 사용하여 저장소 인터페이스를 작성하면 Spring이 자동으로 이를 연결해 줍니다.

사용자 정의 파인더나 예제별 쿼리를 사용할 수도 있으며 Spring이 사용자를 위해 쿼리를 작성합니다!

😯😯 그러면 스프링 데이터 JPA는 JPA구현체가 아니였어...??

💡 스프링 데이터 JPA는 JPA를 편리하게 사용할 수 있도록 하는 프레임 워크고, 스프링 데이터 JPA가 사용하는 JPA 구현체는 Hibernate이다.

새로 알게 된 점

ORM은 관계형 데이터 베이스와 객체지향을 매핑하는 기술!
JPA는 자바 진형 표준 ORM!
Hibernate는 JPA의 구현체!
스프링 데이터 JPA는 스프링 프레임워크의 일부로 JPA를 사용할 때 OOP를 따를 수 있게 하는 프레임워크!

🫶 마무리하면서 🫶

Spring Data JPA는 프레임워크!, Hibernate는 라이브러리라는 사실이 정말 정말 신기하다ㅎㅎ
헐~ 대박이잖아~!

참고 자료

[자바 ORM 표준 JPA 프로그래밍] JPA란?
[JPA] JPA와 Hibernate 그리고 Spring Data JPA
출처: https://dev-coco.tistory.com/74 [슬기로운 개발생활:티스토리]

JPA, Hibernate, 그리고 Spring Data JPA의 차이점

profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글