JPA는 Java Persistence API로, 자바 객체와 DB를 매핑하기 위한 인터페이스를 제공하는 자바 ORM 기술의 표준 명세입니다.
mybatis와 같은 SQL Mapper를 썻을때에는 복잡한 sql문이 필요할 때는 비교적 편리하게 작성할 수 있다는 장점이 있었지만, DB를 중간에 변경하기가 어렵고, 기존 변경사항이 생길때마다 sql을 일일히 수정해줘야 한다는 반복작업을 수행해야 했습니다. 그래서 CRUD를 하루종일 짜고 있는 개발에서 벗어나 비즈니스 로직에 집중하기 위해 ORM기술에 관심이 높아졌다고 합니다.
❓ORM이란
JPA는 DB에 접근할 수 있도록 자바에서 제공하는 API인 JDBC와 application 사이에서 동작합니다. 그래서 JPA를 사용하면 JPA 내부에서 JDBC API를 사용하여 SQL을 호출하고 DB와 통신하게 됩니다.
JPA를 사용하다 hiberate와 spring-data-jpa가 각각 어떤것인지 헷갈릴때가 많았습니다.
반면, spring-data-jpa는 스프링에서 제공하는 프레임워크로, 개발자가 JPA를 편하게 사용핤 있도록 합니다.
개발자가 Repository에서 findById();와 같은 메소드만 가져다 써도 스프링이 적합한 구현체를 만들어 bean으로 등록해줍니다.