ORM (Object Relational Mapping)
- 데이터를 저장하기 위해 사용하는 것 : 데이터베이스
- 객체 지향 프로그래밍에서 사용하는 기본 단위 : Object 객체
이렇게 눈으로 보면 member Table의 name은 member 객체의 name 필드에 매핑되면 될 것처럼 보인다.
ORM
객체와 데이터베이스 사이의 관계를 연결해주는 것
ORM을 통해서 우리가 정의한 객체를 사용하는 값만으로도 자연스럽게 data를 연결해서 사용할 수 있게 된다.
만약, ORM이 없이 직접 data들을 핸들링 한다면, select Query를 통해서 받은 결과 값들을 하나씩 어떤 정보인지 매핑해서 사용해야만 한다.
JPA (Java Persistence API)
현재 Java 진영의 ORM 표준으로 채택되어있다.
data에 접근하기 위한 API의 규격을 정의한 것
ORM이 전체적인 개념이라고 한다면, JPA는 좀 더 구체적으로 그 기능을 정의한 스펙이다.
예시) Entity Class
- interface로 구현되어 있다.
- 라이브러리의 대부분의 class들은 interface, annotation, enum들만 선언되어 있고, 구체 클래스는 거의 존재하지 않는다.
- 이렇게 JPA 내부의 라이브러리를 살펴보면, 앞서 데이터에 접근하기 위한 API 규격이라는 것을 이해할 수 있다.
Hibernate
JPA에 대한 실제 구현체, 흔히 말하는 implementation이다.
Eclipse Link 등의 다른 JPA 프로바이더가 있다고 하지만, 현재 Java에서 사용하는 것은 기본적으로 Hibernate 구현체라고 생각하면 된다. 물론, 구현체의 특성상 JPA의 규격을 따르는 다른 구현체를 대체해서 동일하게 사용할 수도 있다.
Spring Data JPA
Spring에서 Hibernate를 조금 간편하게 사용할 수 있도록 추상 객체를 한번 더 감싸서 만들어 놓은 것이다. 우리는 Spring Data JPA에서 제공하는 방식을 활용하여 실제로 Entity Manager에 접근하지 않고도 데이터에 대한 접근을 좀 더 쉽고 객체지향적으로 처리할 수 있다.
전체 구성도
- Application과 Database를 연결 = ORM
- Java 진영에서의 ORM 표준 스펙 = JPA를 interface로 정의하여 제공
- 해당 JPA의 실제 구현 Class들을 모아놓은 것 = Hibernate
- Hibernate 중에 자주 쓰이는 기능들을 좀 더 사용하기 쉽도록 Spring Frame Work에서 다시 한번 더 묶음으로 제공하는 것 = Spring Data JPA
2023 KAKAO Tech Campus_BackEnd 선택 과정
Spring JPA와 Security 강의 정리 내용입니다.
'개발 > Spring' 카테고리의 다른 글
H2 DB 및 로그 설정 (0) | 2023.07.18 |
---|---|
Lombok 알아보기 (0) | 2023.07.17 |
스프링 부트 프로젝트 생성 (0) | 2023.07.17 |
[5주차] Spring Basic - 개발 도구 설치 & 설정 (0) | 2023.06.28 |
[5주차] Spring Basic - 개발 도구 소개 (0) | 2023.06.28 |