다양한 데이터 저장소에 일관성 있게 접근할 수 있는 방법을 제공하는 spring project
rdb, nosql 둘 다 지원 (spring-data-jdbc, spring-data-redis, spring-data-mongo..)
jpa (java persistence api) ?
객체/테이블을 매핑을 정의하는 인터페이스. Java ORM의 표준
db 쿼리해서 결과를 Java 컬렉션 객체로 반환하는 매커니즘을 제공함. (vice versa) ORM 내부 구현에서는api를 sql로 변경함.
jpa를 사용하면 코드는 그대로 두고, 실제 저장소를 바꿀 수 있음. (운영에서는 MySQL, 테스트에서는 H2)
jpa의 구현체 중 하나가 hibernate
jpa, spring data 다른점?
Speaking precisely, Spring Data JPA is an add-on for JPA. It provides a framework that works with JPA and provides a complete abstraction over the Data Access Layer. Spring Data JPA brings in the concept of JPA Repositories, a set of Interfaces that defines query methods.
jpa는 저장, 조회를 위해 데이터 저장소에 접근하는 스펙(인터페이스)
spring data jpa는 spring data 프로젝트의 일부. JPA 구현이 아님. spring data jpa는 디폴트 jpa 구현으로 hibernate를 사용함
spring data jpa는 쿼리 메서드를 정의한 jpa repository들을 가지고 있다.
jdbcTemplate, jpa 다른점?
jdbcTemplate을 사용하면 db 스키마에 접근할 때 도메인 모델을 사용하지 않는다.
jdbcTemplate이 좀 더 lower level 로 접근이 가능하지만, 그만큼 코드도 늘어난다.
JPA는 db 스키마가 도메인 모델에 매핑시키기 때문에, db에 접근하는게 좀 더 간단해진다.
spring data ?
jpa (java persistence api) ?
jpa, spring data 다른점?
jdbcTemplate, jpa 다른점?