다년간 SW 엔지니어링, 개발, 아키텍처 수립뿐만 아니라 프로젝트 관리 및 코드 품질 개선 활동 등 다양한 경험과 역할을 수행했다. 현재 삼성SDS에서 로우 코드 플랫폼(Low Code Platform) 개발과 관련된 업무를 수행 중이며, 전자정부 표준 프레임워크 오픈커뮤니티 커미터 활동 등을 통해 얕은 지식이나마 공유하기 위해 노력하고 있다.
스프링 프레임워크, 특히 최근 클라우드 네이티브(cloud-native) 기반 애플리케이션 구축에 많이 사용되는 스프링 부트 기반에서 데이터 액세스 기술로 인기를 끌고 있는 것이 바로 JPA(Java Persistence API)다. 개별 데이터베이스 시스템마다 네이티브(native) 쿼리를 작성해야 하는 MyBatis나 코드에 직접 쿼리를 작성하는 JDBC 기반 개발은 DBMS 대상을 확대하기가 쉽지 않지만, JPA의 경우 간단한 설정 변경만으로 여러 DBMS와 버전을 손쉽게 지원하는 특징을 갖는다. 무엇보다도 SQL 중심이 아닌 객체지향적 설계 및 개발 방식을 지원한다.
그러나 JPA는 기존에 익숙하던 방식이나 직관적인 다른 데이터 액세스 기술과는 달리 내부적인 처리 메커니즘을 어느 정도 알고 동작 방식을 이해해야 어려움 없이 활용할 수 있다. 즉, 학습 곡선(learning curve)이 가파르다. 특히 잘못 설계된 엔터티(entity)는 성능에 많은 영향을 주기도 하고, 정확하게 설정되지 않은 연관관계(association)는 예외가 발생하는 등의 난항을 겪는 경우가 많다.
이 책은 JPA에 대한 다양한 측면, 특히 성능과 관련된 이슈와 이에 대한 해결 방법을 다룬다. 다만 JPA의 기초를 다루지 않고 JPA 사용에 대한 기본 지식을 갖고 있어야 볼 수 있는 수준으로, JPA를 이미 사용하고 있는 개발자를 위한 레시피(recipe)와 모범 사례(best practices)를 모았다. 실용적인 레시피를 중심으로 구성되고, 각 레시피는 성능 사례 또는 성능 관련 사례를 중점적으로 다루고 있으며 여러 스타일(순수 하이버네이트 사용, 스프링 데이터 JPA 등)로 작성된 온전한 많은 예제를 포함하고 있다.