JPA (Java Persistance API) 란? 왜 써야하는가?
JPA (Java Persistance API) 란? 왜 써야하는가?
Java 개발자라면 JPA에 대해서 한번 쯤 들어봤을 겁니다.
경력자라면 면접 질문에서도 많이 나오기도 합니다.
그렇다면 JPA란 무엇일까요?
JPA 는 자바 ORM 기술 표준입니다.
그래서 JPA를 설명하기에 앞서 ORM(Object-Relational Mapping) 이 무엇인지 이해하고 넘어가야 합니다.
ORM 은 말 그대로 객체와 관계형 데이터베이를 매핑해주는 기술입니다.
쉽게 말해 SQL문을 ORM 프레임워크에서 대신 생성해주는 것 입니다.
개발자는 비슷한 SQL문을 반복해서 작성해 주는 것이 아니라 객체, Entity Object만 모델링 해주면 되는 것 입니다.
조금만 개발을 해본 개발자라면 위 설명만 봐도 '좋겠는데?' 라는 생각이 드실꺼에요.
왜 JPA를 써야하는지 알아보도록 하죠.
위에서 말한대로 개발자가 직접 SQL문을 작성할 필요가 없어집니다.
물론 복잡한 SQL문은 직접 작성을 해야할 경우도 있지만 상대적으로 드물죠.
DDL, DML 문을 JPA가 직접 처리해주기 때문에 개발 생산성이 높아지게 됩니다.
Mybatis를 사용하는 프로젝트에서 DB 컬럼이 추가 됐다고 하면,
개발자는 테이블을 사용하는 XML의 CRUD SQL문도 수정하고 VO 도 수정을 해주어야 합니다.
하지만 JPA에서는 Entity Object만 수정해주면 되기 때문에 유지보수에도 용이합니다.
변경이 자주 발생하지 않는 테이블을 조회하는 경우 같은 데이터라도 일반적으로는 이벤트가 발생할 때마다 DB 커넥션이 이루어지게 됩니다. 하지만 JPA를 사용하면 한번 Entity 객체를 생성하고 생성된 객체를 재사용하기 때문에 성능적으로도 좋아지게 됩니다.
관계형 데이터 베이스도 Oracle, MySql, MsSql 등 많은 종류가 있습니다. 비슷한 함수나 사용법도 있지만, 완전히 같지는 않죠. 그래서 DB가 변경되는 경우 많은 수정사항이 생기게 됩니다. 하지만 JPA 는 각 종류의 DB Dialect를 제공하여, DB가 변경되는 경우 Dialect 옵션만 변경해주면 이 문제가 해결되게됩니다.
지금까지 JPA 가 무엇인지와 왜 사용해야 하는지에 대해서 개발적인 측면에서 알아보았습니다.
잘 사용하기 어려운 기술이긴 하지만 장점 또한 명확하기 때문에 기회가 된다면 도입해보는 것을 추천드립니다.