JPA 첫 사용 후기

Minsu Kang·2021년 7월 3일
0

회사에 들어와서 약 1달동안 백오피스 기능개선 작업을 맡아서 진행했었습니다.
그 기간동안 JPA를 처음 사용해 보았는데 그 당시 몸소 느꼈던 JPA의 장점들에 대한 글입니다.
(지금은 어느덧 5개월차..)

CRUD 쿼리 자동 생성

spring-data-jpa 를 사용하면
인터페이스만 작성하면 메서드 이름을 분석해서 자동으로 쿼리를 생성해 실행한다.

따라서 지루하고 실수할 가능성이 있는 CRUD 쿼리를 작성할 필요가 없기 때문에 개발자의 수고를 덜어준다.
이 덕분에 생산성이 크게 향상되고, Entity에 컬럼을 추가할 일이 있더라도 JPA 덕분에 쿼리를 수정할 필요가 없다.

JPA를 사용하지 않았더라면 ?

기존에 작성했던 모든 쿼리를 수정하는 작업이 필요하고 그 과정에서 실수할 가능성도 매우 크다.

객체 모델링과 데이터 모델링 사이의 차이점 해소

class Document {
	Long id;
	String title;
	User writer;
}
class Document {
	Long id;
	String title;
	Long writerId; // 외래키
}

객체는 참조를 통해 연관 객체를 가지고 있지만, 데이터베이스의 데이터들은 외래키를 통해 관계를 맺는다.

JPA를 사용하기 전에는,

이런 차이점을 해소하기 위해 객체 모델링을 데이터 모델링에 맞춰서 사용해왔다.
반대의 방법도 가능하지만 데이터를 매핑하는 일을 개발자가 해야 하므로 매우 귀찮은 작업이다.

또한, 참조하는 객체의 depth가 깊을 경우 실행하는 쿼리에 따라 어디까지 객체 참조를 탐색할 수 있을지 정해지기 때문에 불안정성이 크다.

JPA를 사용한다면

JPA는 참조하는 객체를 알아서 매핑하여 가져온다.
심지어 지연 로딩(lazy loading) 이라는 방법을 통해 연관된 객체를 사용하는 시점에 쿼리를 날려 참조하는 객체를 사용할 수 있다.

그 외

이 외에도 JPA를 사용했을 때 얻을 수 있는 장점들이 매우 많다고 한다.
ex) 벤더 독립성, 객체지향적인 설계, 캐시 등등

나는 장점밖에 느끼지 못했는데 같이 개선 작업을 진행했던 동료 개발자분은 n + 1 쿼리로 인한 성능 이슈를 겪었다고 한다. 이런 점들을 보면 아무리 장점이 많은 기술이라도 잘 알고 사용하지 않으면 문제가 되는 듯 하다.

결론 : 더 공부하자!

profile
백엔드 개발자

0개의 댓글