Spring Data JDBC란?
Spring Data JDBC in 스프링부트
JDBC, JPA 등 기존의 DB접근 방식
- 저수준 JDBC를 직접 제어하는 것은 굉장히 번거롭고, 쿼리 관리도 안됨
- 이러한 불편을 해결하기 위해 JPA등의 ORM이 나왔고 많은 문제들을 해결해 줬지만, 몇가지 문제점들이 존재한다
- 영속성 컨텍스트로 인해 중간과정에 대한 이해가 심각하게 복잡하며, 지연로딩으로 인한 이슈가 분명히 존재한다
- 다른 쿼리 프레임워크와 쉽게 호환되지 않는다. 날쿼리가 필요해 JDBC나 Mybatis를 사용해 쿼리를 직접 날릴 경우, 영속성 컨텍스트와 충돌이 날 수 있음을 고려해야 한다
Spring Data JDBC의 지향점
- JDBC API의 장점과 JPA의 장점을 모아 하나로 만들자
- JDBC는 영속성 컨텍스트에 대한 고려가 필요없이 바로바로 실행되는것이 장점
- JPA는 객체와의 매핑이 쉽고, Repository 쓰기가 매우 편함
- Spring Data JDBC = JPA의 영속성 컨텍스트를 걷어낸 경량화된 ORM (simple, limited, opinionated ORM)
- 날쿼리 쏘기 편하게 @Query 어노테이션 지원
- Lazy Loading 불가
- Caching 불가
- Proxy 사용 불가
<aside>
💡 이름에 JDBC가 들어갔다고 해서 저수준 JDBC API처럼 날쿼리를 그대로 날린다고 생각하면 안됩니다! 엄연히 ORM입니다!
실제 소스코드도 Entity를 정의하고, Repository를 사용하는 등 JPA에 가깝게 작성됩니다.
</aside>
Spring Data JPA vs Spring Data JDBC
Spring-Data-JPA vs Spring-Data-Jdbc (2020.10월 기준)
Spring Data Jdbc로 Spring Data Jpa를 대체할 수 있을까?
Spring Data JDBC 사용법
Spring Data JDBC
Introduction to Spring Data JDBC | Baeldung
datasource 정의
엔티티 정의