Home JPA를 공부하기전 알아야할 것들
Post
Cancel

JPA를 공부하기전 알아야할 것들

지난번에 쓴 JAVA에서 DB를 핸들링하는 3가지 방법에서 마지막으로 다룬것이 JPA였습니다. JPA(Java Persistence API)를 다시 설명하자면 자바 진영의 ORM(Object Relational Mapping) 기술 표준으로 인터페이스를 결정합니다. 즉 실제로 동작하는 것이 아니며 이 JAP인터페이스를 구현한 것으로 대표적인 레드헷 제단에서 만든 하이버네이트(Hibernate)가 있습니다.

객체를 관계형 데이터베이스에 저장하려면 개발자는 많은 코드와 SQL을 작성해야 합니다. 예를 들어 객체를 SQL로 변환하는 단순한 일부터, 객체의 상속 구조를 테이블에 저장하는 복잡한 일까지, 개발자는 객체와 데이터베이스 사이에서 무수한 매핑 코드와 SQL을 직접 작성해야 합니다. 자바 ORM 표준인 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결합니다.

JPA를 도입할때 이점이 많은 것은 분명하지만 이는 만능이 아니라는 점입니다. JPA가 대신 테이블, 인덱스, 시퀀스를 대신 생성해주고 관리해주지만 모델링(설계)를 대신해주지는 않습니다. 즉 다르게 말하자면 JPA는 어떻게 보면 기술이지만 동시에 개발하는 패러다임이기 때문에 같이 개발하는 전체 조직이 JPA에 익숙해야 100% 활용 할 수 있습니다. 나혼자 JPA를 배우고 적용한다고 사용할 수 없다는 점입니다. 거기에 SQL문을 일일이 쓰는 것보다 편리하다고 했는데 어디까지나 잘 쓸때에 편리하지 자신이 쓴 매서드를 보고 어떻게 SQL문이 작동하는지 바로 떠오르지 못한다면 위험할 수 있습니다.

당근개발자 당근 서버 개발자 채용 공고

토스개발자 토스 개발자들이 많이 받는 질문

사용하는 직군에 따라서도 JPA 사용이 달라지는 것을 볼 수 있습니다. 위 공고는 당근과 토스의 채용 공고 안내를 살펴보았습니다. 살펴보면 Spring과 JPA가 같이 다니는 것을 볼 수 있습니다. JPA가 좋은 기술인 것은 맞지만 기존의 업체보다는 스타트업위주로 처음부터 도입하여 빠르게 성장 합니다.

하지만 반대로 SI 개발직에서는 JPA를 사용하지 않습니다.

첫번째는 환경적인 문제인데 SI에서 다루는 데이터베이스는 JPA로 하기에는 테이블과 컬럼이 너무 많고 변경이 자주 일어나며 정규화도 잘 되어 있지 않습니다. 두번째는 JPA 개발의 난이도 때문인데 복잡한 쿼리는 어차피 직접 짜야 하며 join, distinct, union 과 group by 를 한번에 사용한 쿼리를 JPA로 작성하는 것은 자살 행위에 가깝습니다. 마지막은 개발 철학인데 JPA를 사용하면 데이터핸들링을 자연스럽게 자바에서 하기 때문에 비즈니스로직이 프로그램속에 들어갑니다. 하지만 SI 개발 철학에서 비즈니스 로직은 쿼리문에 존재해야 한다고 합니다.

JPA 공부는 하나같이 우아한형제들 기술이사의 김영한이 인프런에 올려둔 강의를 기반으로 시작을 합니다. 아직 까지는 JPA가 한국에서 활발하게 쓰이지는 않고 우아한형제들, 배달의 민족이 대표적으로 JPA를 적극적으로 잘 쓰는 곳이라 생긴 문화로 보입니다.

인프런 강의는 링크를 참고해 주시고 참고 도서로 같은 분이 쓴 자바 ORM 표준 JPA 프로그래밍책으로 시작을 하는 것 같습니다. 다만 책은 2015년 출간이기에 최신 버전에 맞추기 위해서는 강의를 봐야 하는 듯 합니다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.