logbook

[덕후감] 자바 ORM 표준 JPA 프로그래밍

허니몬 2015. 10. 16. 19:56
* 도서정보: http://www.yes24.com/24/Goods/19040233?Acode=101

내가 JPA를 처음 접한 것은 대략 4년전, apache의 OpenJPA(http://openjpa.apache.org/) 였다.

그전까지는 iBatis를 조금 사용했을 무렵이다. 지금도 쿼리에는 취약하지만, 그 당시에는 프로젝트에서 사용하는 기술을 따라잡는데도 버거웠던 시절이다.

프로젝트 매니저께서 스트럿츠2, 오픈JPA를 기반으로 프로젝트를 진행하기로 하면서 나의 지옥은 시작되었다.
스프링 3.X를 사용하다가 스트럿츠2+오픈JPA를 쓸려니 어디서부터 어떻게 시작해야할지 막막한 상황에서 초강력의 학습강제력까지 쏟아지면서 난감하기만 했다.
그나마 쿼리 압박을 당하지 않았기에 다행이랄까??

우여곡절 끝에... 프로젝트 두 개를 동시에 마무리 짓고 회사에서 진행하는 새로운 솔루션 개발프로젝트에 합류했다.
다행히(?!) 그 프로젝트에서는 스프링+스프링데이타 JPA+QueryDSL을 사용하고 있었다.
우선은 하이버네이트 프로그래밍(http://m.yes24.com/Goods/Detail/3892382) 책을 통해서 개념을 다잡아가기를 시작했다.

하지만.... 여전히 배워야할 게 많다.

그 후로, 나는 쿼리를 직접적으로 다루는 경우가 거의 없었다. 내가 했던 대부분의 작업이 웹기반의 CRUD작업이었고, 엔티티 객체들을 조작하는 것으로 대부분의 데이터 관련 작업들을 처리하는데 무리가 없었기 때문이었다.

각 개발자들의 로컬에서는,
- H2Database
기능테스트는 개발서버의
- MariaDB
그 밖의 상황에 따라 적절하게 교체할 수 있기 때문이다.

지금도 개발할 때는 스프링의 'Profile' 기능을 이용해서 개발하고 있다.
그 간단한 예제로는...
https://github.com/ihoneymon/honeymon-blog

요즘은 테스트할 때 DB 저장과 관련된 부분은 목객체를 사용하기보다는 h2Database를 인메모리in-memory 로 설정하여 구동시키는 편이다. ㅡ_-);; 목객체 만들기 귀찮...

2년 전에 깃헙에 만들어둔 메이븐으로 만든 프로젝트도 보면 Spring Data JPA가 붙어 있다.


이는 하이버네이트에서 제공하는 방언Dialect 덕분이라고 할 수 있다. 각 DB에 맞춰 처리해줬기 때문에 초반에 환경설정만 하고나면 이후에는 개발에만 집중하면 됐다.

그렇게 주먹구구식으로 JPA 기술을 체득하며 사용하던 내게 좋은 참고서가 생겼다.

김영한님이 2년간 심혈을 기울여 세상에 선보인, 이 책!

바로 예약구매를 걸어놓고 기다리다가 받자마자 읽어내려갔다.

많은 분들의 검수를 받으며 잘 다듬어진 문장은 술술 읽어내려갈 수 있었다. 3일 만에 쭈욱 읽어내렸다.

그리고 때마침 회사에서 SAP의 e-commerce 솔루션 hybris를 기반으로 프로젝트를 진행하고 있는 것들이 있어 사내에 '책읽기 모임'을 주선한다. 오랜 만에 사내 스터디인 덕분에 회사에서 도서구매비를 지원해주었다.


다른 구현체이기는 하지만, JPA를 공부하면서 사람들이 ORM에 대한 개념을 이해하는데 큰 도움이 되었다. 자신들이 사용하던 기술들에 대한 궁긍증을 해소하는 순간 그 기술들에 대한 이해도가 급상승하는 효과가 있다는 것은 다들 알고 있을 것이다.


대략 한달 반(매주 화요일 역삼 본사에 모였다)이 걸려서 모두 읽어냈다. 모두가 함께 마쳤다는 것이 참 만족스러움을 준다.
읽으면서 줄치고 기억해둬야하는 개념이 정의되어 있는 곳은 태그를 붙여놨다. 언제든지 궁금증이 생기면 찾아볼 수 있도록.


이 책의 저자 영한님이 최근 개인방송도 시작했다.

다음에 기회가 닿으면 쐬주나 한잔 하자고 해야겠다. ㅋㅋㅋ
서울말을 구수한 부산억양으로 구사하는 김영한님이 앞으로도 좋은 책을 내어주길 기대하며.