Spring Data JPA vs JPA vs Hibernate

기술명 역할
JPA ORM을 위한 표준 인터페이스 (기능 정의)
Hibernate JPA를 구현한 실제 라이브러리 (실행 담당)
Spring Data JPA JPA 사용을 더 편하게 도와주는 Spring 모듈

 

// JPA (Hibernate)
public List<User> findByName(String name) {
    String jpql = "SELECT u FROM User u WHERE u.name = :name";
    return em.createQuery(jpql, User.class)
             .setParameter("name", name)
             .getResultList();
}

// Spring Data JPA
List<User> findByName(String name);

 

[ 코드 ]
     ↓
Spring Data JPA (자동으로 리포지토리 구현)
     ↓
     JPA (인터페이스)
     ↓
Hibernate (JPA 구현체)
     ↓
Database

 

 

테이블 자동 생성

단계 주체 설명
@Entity 해석 JPA + Hibernate 어노테이션 읽고 해석
DDL(SQL) 생성 Hibernate 엔티티 보고 CREATE TABLE 만들기
DDL 실행 Hibernate + JDBC DB에 SQL 날려서 실행
테이블 생성 DBMS (예: H2, MySQL) SQL 받아서 진짜 테이블 생성

+ Recent posts