본문 바로가기
Programing/JPA

001. JPA Intro

by 슈퍼와이비 2016. 3. 22.
반응형

1. 일일이 모든 쿼리를 까보는 건 귀찮은 일이다.

자바로 웹개발을 주로 진행하는데 어느 회사를 가든지 사용하는 프레임워크나 패턴이 거의 유사함을 많이 느끼고 있다. 스프링 프레임워크를 사용하며, 관계형DB와 객체간의 맵핑은 아이바티스(마이바티스)를 사용한다. (간혹 JdbcTemplte을 사용하여 개발된 코드를 보기도 한다.) 그래서 어떤 개발환경을 받아봐도 개발패턴에 대한 이해가 부족하여 분석이 안되거나 처음 접하는 프레임워크가 있어서 환경에 대한 분석이 안되는 경우는 많지 않다. 단, 소스를 분석하며 쿼리를 분석하는 것은 만만치 않은 시간이 필요하다. 간단한 조회쿼리라고 할지라도 일일이 쿼리를 열어보지 않는 한 알수가 없다.


2. 반복되는 작업은 너무 지루하다.

웹어플리케이션을 만들면서 가장 많이 반복되는 작업중 하나는 게시판 생성작업일 것이다. 기존에 만들어 놓았던 게시판과 유사한 게시판을 이름만 바꾸어서 만들어 내는 것은 개발업무라기보다는 노가다 작업같은 느낌이 많이 든다. 기존에 만들어두었던 컨트롤러, 서비스, DAO 를 카피하여 만들어내고, 테이블을 생성한 뒤 기존 게시판 쿼리를 약간 변경하여 iBatis 설정파일에 등록하는 일련의 작업은 지루함의 연속이다. 게시판의 만들고 테스트를 하는데 쿼리나 스프링 의존성주입 부분에서 오타가 발생했을 경우 작업같지 않은 작업때문에 슬슬 짜증을 유발한다. 


3. 귀찮고 지루한 작업을 안할 수 있을까?

우리가 만드는 어플리케이션은 관계형DB에 상당히 많은 부분 의존하고 있다. 문제는 어플리케이션의 구조와 관계형DB의 구조가 다르다는 것에 있다. 그래서 어플리케이션과 DB 구조상의 차이를 해결하기 위한 많은 기법과 프레임워크를 도입하고 있다. 그런데 구조상의 차이를 해결하기 소모하는 비용이 너무나 크다는 것에 있다. 요구사항이 변경되어 DB에 컬럼이라도 하나 더 추가되면 쿼리부터 시작해서 VO까지 전부다 변경해야 하는 노가다의 시작이다. 이런 작업은 개발자를 너무나 지치게 한다. JPA는 이런 소모적인 작업에 대한 해결책을 제시한다. 


4. JPA 진정한 해결책이 될 것인가?

JPA의 사용으로 관계형DB로부터의 독립을 선언하게 될지, 아니면 또 다른 짐을 지게되는 일이 될런지 아직까지는 알 수 없다. 수많은 프레임워크가 시장에 나오지만 개발자에게 선택받은 프레임워크는 많지 않다. JPA의 패러다임과 기능을 충분히 숙지한 후 적용해보며 현업에 도입할지는 개발자 개인의 숙제가 될것같다.

MySQL을 사용한 웹어플리케이션을 서버이관작업을 하면서 오라클로 변경하라는 과업이 생겼다. 쿼리수정부터 시작해서 DDL을 다시 작성해야하는데 그 양이 어마어마하고, 변경후 테스트를 잘 통과할 수 있을지 심히 머리가 아프다. JPA를 사용하여 웹어플리케이션을 구현했다면 부담감이 좀 줄어들었을까? 다시 한번 JPA에 대해 생각해보게 된다.

반응형