JPA를 처음 접했을 때의 놀라움은 아직도 잊혀지지 않는다. 지금까지 관계형 데이터베이스에서 객체를 관리하려고 작성했던 무수한 CRUD 코드와 SQL들이 머릿속을 스쳐 지나갔다. 마치 시골에서 직접 모내기를 하다가 최신 트랙터를 만난 기분이었다.
객체를 관계형 데이터베이스에 저장하려면 많은 시간과 코드를 소비해야 한다. 예를 들어 객체를 SQL로 변환하는 단순한 일부터, 객체의 상속 구조를 테이블에 저장하는 복잡한 일까지, 개발자는 객체와 데이터베이스 사이에서 무수한 매핑 코드와 SQL을 작성해야 한다. 자바 진영에서는 이런 문제를 해결하기 위해 JPA라는 표준 기술을 제공한다. 자바 ORM 표준 JPA는 SQL 작성 없이 객체를 데이터베이스에 직접 저장할 수 있게 도와주고, 객체와 관계형 데이터베이스의 차이도 중간에서 해결해준다.
그간 실무에 JPA를 도입하면서 처음에는 좌충우돌하기도 했지만, 개발 생산성과 유지보수가 확연히 좋아졌고, 남은 시간에 코드 품질과 테스트에 더 많은 시간을 쏟을 수 있었다. 그리고 JPA를 사용해본 동료들은 전으로 돌아가고 싶어하지 않았다. 하지만 JPA에 대한 국내 자료가 부족했고, 대부분이 원서여서 어려운 점이 많았다. 그래서 때가 되면 JPA에 대한 책을 쓰고 싶다고 어렴풋하게 생각했는데, 마침 『토비의 스프링 3』과 『토비의 스프링 3.1』을 저술하신 이일민 님께서 JPA에 관한 책 쓰기를 권유하셨다. 6개월 정도면 충분하겠지 생각하고 책을 쓰기로 했는데, 어느덧 시간이 화살처럼 빠르게 지나 2년이 지나버렸다.
이 책에서는 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다루는 데 주력했다. 또한, 스프링 프레임워크와 JPA를 함께 사용하는 방법을 설명하고, 스프링 데이터 JPA, QueryDSL 같은 혁신적인 오픈 소스를 활용해서 자바 웹 애플리케이션을 효과적으로 개발하는 방법을 설명했다.
돌이켜보니 보잘것없는 사람의 책을 기다리고 응원해주신 분들 덕분에 여기까지 온 것 같다. 진심으로 정말 큰 힘이 되었기에, 그 모든 분께 감사를 전한다. 이 책이 JPA를 시작하는 분들께 조금이나마 도움이 되길 바란다.