Spring

[Spring] JPA, Hibernate, Spring data JPA

hail2y 2024. 6. 11. 23:26

https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/

 

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

개요 Spring 프레임워크는 어플리케이션을 개발할 때 필요한 수많은 강력하고 편리한 기능을 제공해준다. 하지만 많은 기술이 존재하는 만큼 Spring 프레임워크를 처음 사용하는 사람이 Spring 프레

suhwan.dev

 

1. JPA

- Java Persistence API: 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스

- 자바 진영의 표준 인터페이스

- 인터페이스이기 때문에 특정 기능을 하는 라이브러리가 아니다

- JPA의 핵심이 되는 EntityManager도 javax.persistence.EntityManager라는 파일에 interface로 정의되어 있다.

 

2. Hibernate

- JPA라는 명세의 구현체

- javax.persistence.EntityManager와 같은 인터페이스를 직접 구현한 라이브러리

- 즉, JPA-Hibernate의 관계는 자바의 interface와 그를 구현한 class와 같은 관계

 

3. Spring Data JPA

- Repository가 Spring Data JPA의 핵심

- 이(Repository)는 JPA를 한 단계 추상화시킨 인터페이스

- 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면 Spring이 알아서 해당 메서드 이름에 적합한 쿼리를 날리는 구현체를 만들어 Bean으로 등록해 준다.

- JPA를 추상화했다는 말은 Spring Data JPA의 Repository 구현에서 JPA를 사용하고 있다는 것

 

https://velog.io/@heoseungyeon/JPA-vs-Spring-Data-JPA

+ JDBC

https://velog.io/@heoseungyeon/JdbcTemplatefeat.%ED%85%9C%ED%94%8C%EB%A6%BF-%EC%BD%9C%EB%B0%B1-%ED%8C%A8%ED%84%B4

1.  ORM (Object-Relational Mapping)

- 객체로 연결을 해 준다.

- 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간 데이터를 변환하는 프로그래밍 기술

- 즉, 객체와 관계형 데이터베이스의 데이터를 매핑하는 것이다.  

 

- 객체를 통해 DB Data를 다룬다.

- SQL 쿼리가 아닌 메서드로 데이터를 조작할 수 있다.

- 객체 간 관계를 바탕으로 SQL을 자동으로 생성한다.

- JPA, Hibernate

 

2. SQL Mapper

- SQL 쿼리 문으로 직접 DB를 조작한다.

- Mybatis, jdbcTemplate

 

아래는 chatGPT가 비교 분석해 준 내용

 

MyBatis와 JPA의 차이점 및 연결

JPA의 특징 (ORM 방식)

  • 자동 매핑: 엔티티 클래스와 데이터베이스 테이블을 자동으로 매핑합니다.
  • 데이터베이스 독립성: 데이터베이스에 종속적이지 않으며, 동일한 코드를 사용하여 여러 데이터베이스에서 동작할 수 있습니다.
  • 객체 지향적: 객체 모델을 기반으로 데이터베이스에 접근합니다.
  • 데이터베이스 관리를 자동화: 데이터베이스 스키마 관리, 트랜잭션 관리 등을 자동화합니다.

MyBatis의 특징 (SQL 매핑 방식)

  • SQL 제어: 개발자가 직접 SQL 쿼리를 작성하고 제어할 수 있습니다.
  • 성능 최적화: 복잡한 쿼리나 성능 최적화가 필요한 경우 유리합니다.
  • 유연성: SQL을 자유롭게 작성할 수 있어 복잡한 데이터베이스 구조나 쿼리를 유연하게 처리할 수 있습니다.
  • Mapper 사용: XML 매퍼 파일 또는 애노테이션을 사용하여 SQL 쿼리를 매핑합니다.