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 받아서 진짜 테이블 생성 |