스프링 프레임워크 DB 접근 방법
오늘날 대부분의 경우 스프링 Data JPA + queryDSL 을 활용하여 개발합니다.
1. JDBC API (Java Database Connection API)
- Java에서 DB에 접근하기 위한 기본 API
- 데이터베이스 연결, SQL 쿼리 실행, 결과 처리 등의 모든 과정을 직접 관리
- 코드가 복잡해지고, 에러 처리 및 리소스 관리에 신경써야함
2. 스프링 Jdbc Template
- 스프링 프레임워크에서 제공하는 기술 중 하나로, JDBC API를 추상화하여 사용성을 증가시킴
- 개발자가 연결 관리, SQL 예외 처리, 리소스 정리 등을 직접 신경 쓰지 않아도 되고, 반복적인 코드를 줄일 수 있음
- SQL 쿼리는 직접 작성해야 함
3. JPA (Java Persistence API)
- 자바에서 지원하는 ORM(Object-Relational Mapping) 표준
- SQL 쿼리를 직접 작성하지 않고, 객체 지향적인 방식으로 DB 작업을 수행할 수 있음
- JPA는 인터페이스이며, 이의 구현체로 Hibernate, EclipseLink 등의 프레임워크가 존재. 대표적으로 Hibernate를 사용함
4. 스프링 Data JPA
- 스프링 프레임워크에서 제공하는 JPA 기반 데이터 엑세스 추상화 라이브러리
- 기본적인 CRUD 및 쿼리 메소드 구현체 생성 등의 기능을 지원하여, 개발자가 직접 구현하지 않아도 많은 기능을 사용할 수 있게 함
각 방법의 주요 차이점 비교
-
[추상화 수준] JDBC API < JDBC Template < JPA < Spring Data JPA
-
[개발 생산성] JDBC API < JDBC Template < JPA < Spring Data JPA
-
[코드의 복잡성] JDBC API > JDBC Template > JPA > Spring Data JPA
-
[유연성] JDBC API > JDBC Template > JPA > Spring Data JPA
-
[SQL 쿼리 작성] JDBC API와 JDBC Template은 직접 작성해야 하지만, JPA와 Spring Data JPA는 대부분의 경우 자동으로 생성됩니다.
따라서 일반적인 경우 개발 생산성과 객체 지향적인 접근을 위해 Spring Data JPA 또는 JPA를 사용하며, 동적인 쿼리가 필요할 경우 대개 queryDSL을 적용하지만, 더욱 세밀한 제어를 해야 하는 경우 선택적으로 JDBC Template을 사용할 수 있습니다.