본문 바로가기
개발/Database

JPA 와 Spring Data JPA 의 차이

by yo.na 2023. 6. 18.

✔ 개념

 

ORM 이란?

 

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

객체 지향 프로그래밍 언어의 객체와 데이터베이스 테이블 간의 매핑을 추상화하여 개발자가 데이터베이스와 상호 작용하는 데 있어서 더욱 편리하게 만들어줍니다. 이를 통해 개발자는 객체 지향적인 관점에서 개발에 집중할 수 있습니다.

ORM 은 객체와 데이터베이스 간의 매핑을 자동으로 처리합니다.

ORM 은 개발자가 SQL 쿼리를 직접 작성하는 대신, 객체와 관련된 작업을 수행할 수 있는 메서드와 인터페이스를 제공합니다.

 

 

JPA (Java Persistence API ) 란?

 

JPA는 자바에서 ORM을 사용하기 위한 표준 인터페이스를 제공합니다.

JPA는 인터페이스이므로 JPA를 직접 구현하기 위해서는 JPA 구현체(예: Hibernate, EclipseLink)를 선택하여 사용해야 합니다.

JPA는 엔티티 매핑, 영속성 컨텍스트, JPQL (Java Persistence Query Language) 등을 포함한 ORM을 위한 핵심 개념과 기능을 정의합니다.

 

 

Hibernate 란?

 

Hibernate는 ORM(Object-Relational Mapping) 라이브러리로, 데이터베이스와 상호 작용하기 위해 SQL 쿼리를 생성하고 실행하는 역할을 합니다. Hibernate를 사용하면 개발자는 직접 SQL 쿼리를 작성하지 않고도 객체를 조작하여 데이터베이스와 상호 작용할 수 있습니다.

Hibernate는 개발자가 객체를 조작하면서 필요에 따라 내부적으로 SQL 쿼리를 생성하여 데이터베이스에게 요청합니다. 이렇게 생성된 SQL 쿼리는 Hibernate가 데이터베이스와 상호 작용하기 위해 사용하는 것입니다. 이를 통해 개발자는 객체 중심적인 코드 작성에 집중하면서도 데이터베이스와 효율적으로 상호 작용할 수 있습니다.

 

 

여기까지는 JPA 검색하면 많이 나오는 내용입니다. 하지만 실제로 제가 프로젝트에서 사용하고 있는건 Spring Data Jpa 라서 이건 Jpa 와 무슨 차이가 있나 알아보았어요!

 

Spring Data JPA 란?

 

Spring Data JPA는 스프링 프레임워크에서 JPA를 쉽게 사용하기 위한 기술입니다.

Spring Data JPA는 JPA를 활용하여 데이터베이스와 상호 작용하는 데 필요한 많은 기본 작업들을 자동화합니다.

Spring Data JPA는 CRUD (Create, Read, Update, Delete) 작업, 페이징, 정렬, 쿼리 메서드 생성 등을 지원하는 기능을 제공합니다.

Spring Data JPA는 리포지토리 인터페이스를 사용하여 데이터베이스 조작을 추상화하고, 개발자가 데이터 액세스 계층을 간편하게 구현할 수 있도록 도와줍니다. 또한 querydsl, xml 기반 매핑 지원까지 해줍니다.

Spring Data JPA는 JPA 구현체(예: Hibernate)를 내부적으로 사용하며, 개발자가 별도의 JPA 구현체 설정을 하지 않아도 됩니다.

 

 

✔ 요약

JPA는 Java에서 ORM을 위한 표준 인터페이스를 제공하고,  인터페이스이기 때문에 JPA 구현체(대표적으로 Hibernate) 를 선택하여 직접 구현해야 합니다.

 

Spring Data JPA 는 스프링 프레임워크에서 JPA를 쉽게 사용할 수 있도록 도와줍니다.

기본적인 데이터베이스 조작을 자동화하는 기능을 제공하고 JPA의 기능을 편리하게 활용할 수 있도록 추상화된 인터페이스를 제공하여 개발자의 생산성을 높입니다.

 

 

✔ 참고

https://spring.io/projects/spring-data-jpa#overview