JPA (Java Persistence API)
- 자바 진영의 ORM 기술 표준을 채택된 인터페이스의 모음
- ORM이 큰 개념이라면 JPA는 더 구체화된 스펙을 포함함
- 즉 JPA는 실제로 동작하는 것이 어떻게 동작해야 하는지 메커니즘을 정리한 표준 명세
JDBC
- JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접근할 수 있게 해주는 API
- JDBC는 관계형 데이터베이스를 사용하기 위한 표준 인터페이스를 제공하며, SQL 쿼리를 실행하거나 결과를 검색하는 등의 데이터베이스 관련 작업을 수행할 수 있음
- JPA의 메커니즘은 내부적으로 JDBC를 사용
- 개발자가 직접 JDBC를 구현하면 SQL에 의존하게 되어 개발 효율성이 떨어지는 문제 발생
- JPA는 개발자 대신 적절한 SQL을 생성하고 데이티ㅓ베이스를 조작해서 객체를 자동 매핑하는 역할 수행
JDBC를 사용한 DB 조작 코드 예시 (*뤼튼 AI가 생성한 코드이므로, 정확하지 않을 수 있습니다.)
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class MyService {
private final JdbcTemplate jdbcTemplate;
public MyService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@PostConstruct
public void createTable() {
jdbcTemplate.execute("CREATE TABLE customers(id SERIAL, name VARCHAR(255))");
}
public void insertData() {
jdbcTemplate.execute("INSERT INTO customers(name) VALUES ('John')");
}
public void fetchAllCustomers() {
jdbcTemplate.query(
"SELECT id, name FROM customers",
(rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("name"))
).forEach(customer -> System.out.println(customer.toString()));
}
}
JPA의 대표적인 구현체
- 하이버네이트(Hibernate)
- 이클립스 링크(EclipseLink)
- 데이터 뉴클리어스(DataNucleus)
하이버네이트(Hibernate)
자바의 ORM 프레임워크로, JPA가 정의하는 인터페이스를 구현하고 있는 JPA 구현체중 하나
하이버네이트를 편하게 사용하도록 모듈화한 것이 Spring Data JPA
Spring Data JPA
- JPA를 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트 중 하나
- CRUD 처리에 필요한 인터페이스를 제공하며, 하이버네이트의 엔티티 매니저(EntityManager)를 직접 다루지 않고 리포지토리를 정의해 사용하여 스프링이 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작함
참고 자료
스프링 부트 핵심 가이드 "스프링 부트를 활용한 애플리케이션 개발 실무" , 장정우, 2022
'Development > Spring' 카테고리의 다른 글
[Spring] Springboot Swagger 3 적용하기 (Springdoc-OpenAPI3) (0) | 2024.01.30 |
---|---|
[Spring] 엔티티 (Entity) (0) | 2024.01.24 |
[Spring JPA] DDL, DDL 옵션 (0) | 2024.01.16 |
[Spring] 스프링 부트의 동작 방식 (0) | 2024.01.15 |
[Spring] 스프링 부트란? (0) | 2024.01.15 |