
내일배움캠프 19일차 TIL : Spring - JPA
JPA란 자바 ORM 기술에 대한 API표준 명세를 의미한다.
JPA는 ORM을 사용하기 위한 인터페이스를 모아둔 것이며, JPA를 사용하기 위해 JPA를 구현한 Hibernate, EclipseLink, DataNucleus같은 ORM 플레임워크를 사용해야 한다.
ORM은 객체와 DB의 테이블이 매핑을 이루는 것
객체가 테이블이 될 수 있도록 매핑해주는 것을 망한다.
ORM을 사용하면 SQL쿼리가 아닌 직관적인 코드, 메서드로 데이터를 조작할 수 있다.
예를 들어 위의 깃허브 내의 코드에서 초기 커밋을 보면 jdbc로 데이터를 관리하는 Repository는 SQL 쿼리를 사용하여 데이터를 저장하며 관리했다.
후반 커밋을 보면 JPA형식으로 변경했을 때 Repository를 보면 인터페이스를 선언을 한 후 Service에서 findAll이나 findById 같은 메서드만으로 데이터를 호출하는 것을 볼 수 있다.
이렇게 사용하는 것이 ORM이다.
SQL quiry -> method 호출
형태로 데이터를 관리하는 방식이 바뀐것이다.
JDBC에 비해 코드의 복잡성도 낮아지며 간결해지고 유지보수가 쉽다는 점이 있다.
다만 여기서 사용한 프레임 워크는 Hibernate라는 것이고 조금 뒤에 다룰 내용은 Hibernate에 관한 내용이다.
JPA라는 명세의 구현체다.
avax.persistence.EntityManager와 같은 Jdbc Api기능을 구현한 라이브러리이다.
JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다.
우리가 사용했다는 ORM 즉 Sql쿼리가 아닌 객체를 데이터로 다룰 수 있게 만든 프레임 워크가 Hibernate 다
다른 자료를 찾아보면서 EntityManager,EntityManagerFactory,EntityTranscation 같은걸 구현해서 JPA의 핵심을 구현하여 데이터베이스와 상호작용을 했다면
Hibernate는 각각을 미리 상속받고 구현한다.
여튼 다른 ORM 프레임워크도 있지만 대부분 Hibernate를 사용한다.
위에서
다른 자료를 찾아보면서 EntityManager,EntityManagerFactory,EntityTranscation 같은걸 구현해서 JPA의 핵심을 구현하여 데이터베이스와 상호작용을 했다면
이라고 했는데
실제로 Repository를 정의하여 사용했다.
Repository가 바로 Spring Data JPA의 핵심이다.
Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로, JPA 위에 추가적인 기능을 제공하여 JPA 기반 애플리케이션 개발을 보다 간편하게 만드는 라이브러리/프레임워크다.
참고