역사
옛날 옛적에 EJB(Enterprise Java Beans)라는 기술이있었다.
지금으로 따지면 스프링, ORM 같은 기능들이 있었다.
이론은 좋았지만 기술이 너무 복잡했다.
EJB 지옥에서 두 명의 영웅이 나타났다.

- 스프링
- 스프링은 EJB 컨테이너를 대체하였다. 로드존슨이 쓴 책을 보고 사람들이 감탄하면 개발한것이 스프링이다.
- 하이버네이트
- EJB 엔티티빈 기술을 대체하였다. JPA라는 새로운 표준이 정의되었다.
- EJ 엔티티빈 -> 하이버네이트 -> JPA
JPA가 잘사용되고있는 이유는 오픈소스를 기반으로 표준 인터페이스를 만들었기 때문이다. 즉, 복잡한 이론보다는 실무에서 사용하기 좋은 기술을 중점으로 개발되었다.
Spring Data의 등장
과거에는 관계형 데이터베이스의 세상이였다..
하지만 아래와 같은 신흥 세력이 등장하였다.

Spring Data란?
- 위의 새로나온 기술들은 데이터를 어딘가에 저장하고 조회하고 변경하고 삭제하는 것은 동일하고 어디에 저장하는지만 다르다
- 기본 CRUD에 대해 인터페이스를 만들고 편리하게 사용할 수 있도록 하자는 생각에서 출발
- Spring Data 라는 공통기술에서 CRUD 같은 기본적인 인터페이스를 제공
Spring Data는 단순한 통합 그 이상이다.
아래와 같은 기능들을 제공한다.
- CRUD + 쿼리
- 동일한 인터페이스가 제공
- 페이징 처리
- 메서드 이름으로 쿼리를 자동으로 생성
- 스프링 MVC에서 id 값만 넘겨도 도메인 클래스로 바인딩
- 저장소와 관계 없이 추상화해서 공통으로 제공하는 기능