인터페이스이기에 구현체가 없고 사용하기 위해서는 ORM 프렘임워크를 선택해야 한다. (Hibernate, OpenJPA)
자바 진영의 ORM 기술 표준으로, 인터페이스 모음
JPA는 어플리케이션과 JDBC 사이에서 동작하는데 JPA 내부에서 JDBC API를 이용하여 DB와 통신을 하게 된다.
JPA 특징
SQL 중심에서 객체 중심으로 개발하면서 패러다임의 불일치를 해결
생상성 & 유지보수에 뛰어남
DBMS에 종속적이지 않음
2.Spring Data JPA
JPA를 더욱 편하게 사용하기 위해 만들어진 모듈이다.출처 : https://velog.io/@adam2/JPA%EB%8A%94-%EB%8F%84%EB%8D%B0%EC%B2%B4-%EB%AD%98%EA%B9%8C-orm-%EC%98%81%EC%86%8D%EC%84%B1-hibernate-spring-data-jpa
Spring Data JPA는 반복되는 CRUD 문제를 더욱 편리한 방법으로 해결할 수 있게 해준다. 아래의 공통 인터페이스인 JpaRepository를 상속받은 인터페이스를 생성하면 CRUD를 편하게 사용할 수 있다
Spring Data JPA 인터페이스 및 기능
findAll() : 해당 엔티티 테이블에 있는 모든 데이터 조회
save() : 대상 엔티티들 DB에 저장
saveAll() : Iterable 가능한 객체 저장
delete() : 데이터베이스에서 대상 엔티티를 삭제
이외에도 다양한 기능을 제공 - 검색 조건으로 findBy 뒤에다가 검색할 조건값을 입력
- 이외에도 distinct, orderby 등등을 다양한 기능에 대해 사용 가능 출처 : https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.details
Spring Data JPA 반환 타입
다양한 반환 타입을 지원
결과가 한건 이상이면 컬렉션 인터페이스를 사용하고, 단건이면 Optional 이나 T를 사용 - T와 Optional : 결과가 2개이면 에러 발생 - 컬렉션 : 결과가 없는 경우 빈 컬렉션 반환(Null 아님)