Spring Data JPA 소개

Crow·2022년 6월 19일
0

Spring Boot

목록 보기
2/6

3. Spring Data JPA 소개

JPA(Java Persistence API)는 간단히 말해서 Java 언어를 통해서 데이터베이스와 같은 영속 계층을 처리하고자 하는 스펙임

JPA를 이해하기 위해서는 우선 ORM(Object-Relational Mapping)이라는 기술에 대해서 먼저 알아야함

ORM과 JPA

ORM(Object-Relational Mapping)은 간단히 말하면
객체지향 패러다임을 데이터베이스에 보존하는술기술이라고 할수있고
패러다임 입장에서 생각하자면 객체지향 패러다임을 관계형 패러다임으로 매핑(mapping)해주는 개념이라고 볼 수 있음

ORM의 시작은 아주 단순한대 객체지향 구조가 관계형 데이터베이스와 유사하다는 점에서 시작했음
예를 들자면
Member 라는 클래스를 만들면 String형으로 id,pw,name을 설계할수있음
그리고 Member라는 테이블을 만드는것 역시 varcher2형으로 uid,upw,uname을 설계함

Class Member == Table Member
Stirng id == uid varcher2(50)
String pw == upw varcher2(50)
String name == uname varcher2(100)

이처럼 테이블과 클래스는 상당히 유사함

그리고 인스턴스와 Row(레코드 혹은 튜플)도 상당히 유사함
클래스에서 인스턴스를 생성해서 인스턴스라는 공간에 데이터를 보관하는대, 테이블에선 하나의 Row에 데이터를 저장함
여기서 유일한 차이라면 객체라는 단어는 데이터 + 행위(메서드)를 의미하지만 Row는 데이터만을 의미함

또한 관계와 참조라는 의미도 매우 유사한대

관계형 데이터베이스는 테이블 사이의 관계를 통해서 구조적인 데이터를 표현한다면,

객체지향에서는 참조를 통해서 어떤 객체가 다른 객체들과 어떤 관계를 맺고 있는지를 표현함
(물론 표현한다는 점에선 같지만 실제 구현에서는 좀 차이가 존재함)

이런 특징에 기초해서 만들어진것이 ORM의 시작임

ORM은 완전히 새로운 패러다임을 주정하는 것이 아니라 객체지향관계형사이의 변환 기법을 의미하는 것임.

JPA는 ORM을 Java에 맞게 사용하는 스펙일뿐이지
ORM이 좀 더 상위 개념이 되고, 언어에 국한되는 개념이 아님

JPA 또한 단순한 스펙이기 때문에 해당 스펙을 구현하는 구현체마다 회사의 이름이나 프레임 워크의 이름이 다름

지금 사용할 것은 그중에서 가장 유명한 Hibernate

Spring Data JPA와 JPA

위에서도 말했지만 스프링 부트는 Hibernate라는 구현체를 이용함
Hibernate를 자세히 설명하려면 EJB와 엔티티 빈까지 설명해야하는데 너무 범위가 커져서 생략하겠음

다른 프레임워크도 그렇지만 Hibernate는 단독으로 프로젝트에 적용이 가능한 독립된 프레임워크임(한마디로 스프링 부트가 아닌 스프링만을 이용해도 Hibernate와 연동해 JPA를 사용가능함)

프로젝트생성시 추가한 Spring Data JPA는 Hibernate를 스프링 부트에서 쉽게 사용할 수 있는 추가적인 API를 제공함

Spring Data JPA를 이용했을 때는 다음과 같은 구성으로 이용함

Spring Data JPA <-> Hibernate <-> JDBC <-> DB
profile
어제보다 개발 더 잘하기 / 많이 듣고 핵심만 정리해서 말하기 / 도망가지 말기 / 깃허브 위키 내용 가져오기

0개의 댓글