JPA란 자바에서 ORM 기술 표준으로 사용되는 인터페이스 중 하나이다.
JPA를 구현한 오픈소스로는 대표적으로 Hibernate이다.
요즘 왜 JPA를 많이 사용할까?
JPA를 많이 사용하기 이전에 백엔드 개발자들은 DB를 설계하고 쿼리문을 짜는데 굉장히 많은 시간을 소요했다.
하지만 JPA를 사용한 이후부터는 반복적인 CRUD를 처리해주고 어떤 SQL이 실행될지 고민만 하면 되는것이다.
JPA를 사용함으로써 가장 큰 이점은 백엔드 개발자가 객체중심으로 개발을 진행 할 수 있다는 점이다.
이는 생산성과 유지보수의 용이성으로 이어진다.
JPA에서 CREATE, SELECT, DELETE를 제공하지만 유일하게 UPDETE는 제공하지 않는다. 매핑된 객체에 변경된 값을 조회해서 커밋하면 DB에 UPDATE문을 전송하여 실행한다. 여기서 주의점은 UPDATE는 꼭 @Transaction 애너테이션을 붙여주어야한다.
Transaction이란 더 이상 쪼갤 수 없는 최소 작업 단위를 의미한다.
데이터베이스를 작업하는 도중에 문제가 생기는 경우가 있다. 그럴때는 문제가 그대로 데이터베이스에 저장되면 안되기때문에 rollback을 이용하여 취소를 하여야하고 문제없이 정상적으로 작동이 되었다면 commit을해서 데이터베이스에 작업이 반영되도록 한다.
JPA를 사용하기 위해서는 Transaction 작업이 필수적이기 때문에 스프링에서 제공하는 JPA에 Transaction이 애너테이션으로 자동으로 적용되어 작동한다. 위에서 말했듯이 update는 수동으로 붙여주어야한다.