
- 객체와 관계형 데이터베이스의 데이터를 매핑하여 '객체 지향적인 코드'를 작성 가능하게 하는 기술을 의미

- ORM 참고 예시

테이블 컬럼과 매핑된 객체를 아래와 같이 표현합니다.
import lombok.AccessLevel;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
/**
* tb_user 테이블과 매핑 객체
*
* @author : jonghoon
* @fileName : UserEntity
* @since : 2/8/24
*/
@ToString
@Entity
@Table(name = "tb_user")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_sq")
private int userSq;
@Column(name = "user_id")
private String userId;
// 사용자 패스워드
@Column(name = "user_pw")
private String userPw;
// 사용자 이름
@Column(name = "user_nm")
private String userNm;
// 사용자 상태
@Column(name = "user_st")
private String userSt;
@Column(name = "user_email")
private String userEmail;
@Builder(toBuilder = true)
public UserEntity(int userSq, String userId, String userPw, String userNm, String userSt, String userEmail) {
this.userSq = userSq;
this.userId = userId;
this.userPw = userPw;
this.userNm = userNm;
this.userSt = userSt;
this.userEmail = userEmail;
}
}
- 데이터베이스를 쉽게 다루기 위한 '데이터 액세스 기술'로 ORM 기법을 사용하여 자바 애플리케이션에서 사용하는 객체와 관계형 데이터베이 사이의 매핑을 관리하는 ORM 기술에 대한 API 표준 명세서(인터페이스)를 의미한다.

즉, JpaRepository > PagingAndSortingRepository > CRUDRepository > Repository 라고 생각하면 알기 쉽다.

예를 들어, UserRepository라는 인터페이스가 Repository를 상속하고, 이 인터페이스 안에 findByUsername(String username)이라는 메서드를 정의하면, Spring Data JPA는 "SELECT * FROM User WHERE username =?"라는 SQL 쿼리를 자동으로 생성하고 실행합니다.

- Spring Data JPA에서 제공하는 인터페이스로 기본적인 CRUD 작업에 필요한 많은 메서드를 미리 정의해 놓고 있다.
주요 메서드는 save(), findOne(), findAll(), count(), delete() 등이 있습니다.

- Spring Data Repository의 하나로, 페이징 및 정렬 기능을 제공합니다. 이 인터페이스를 사용하면 개발자는 페이징 및 정렬 기능이 포함된 CRUD 작업을 수행할 수 있다.
JpaRepository와 같은 다른 Spring Data Repository와 달리, 특정 도메인 클래스에 대한 추가 쿼리 메서드를 제공하지 않습니다.

- Spring Data JPA에서 제공하는 인터페이스로, 개발자가 JPA를 더 쉽게 사용할 수 있도록 도와줍니다.
PagingAndSortingRepository, CRUDRepository 의 기능을 가지고 있다.


- JPA(Java Persistence API)의 API 표준 명세서(인터페이스)를 구현한 구현체 중 하나로 JPA 표준을 따르면서 자체적인 기능을 제공하는 ORM 프레임워크이다.


출처 : [Java/JPA] Spring Boot Data JPA 이해하기 -1: ORM, JPA, Hibernate, QueryDSL 이론