퇴근후 JPA 조금씩 공부중 인데 많이 어렵군요..
JPA를 단순히 쿼리를 자동으로 생성해주는 도구라고만 생각하고 얕잡아 봤던 과거의 제 자신을 반성하게 됩니다.
JPA가 어떤 문제를 해결하기 위해 등장했는지와 같은 근본적인 개념부터 시작해서, 연관관계 매핑, 프록시, 영속성 컨텍스트 등 깊이 이해해야 할 개념이 정말 많다는 것을 깨달았습니다.
MyBatis는 SQL만 어느 정도 다룰 줄 알면 금방 익숙해질 수 있었는데, JPA는 연관관계 매핑을 조금만 잘못 설정해도 예상치 못한 쿼리가 생성되어 훨씬 더 어렵게 느껴집니다.
특히 MyBatis는 XML에 쿼리를 직접 매핑하기 때문에 동작 방식이 직관적으로 이해됐습니다. 반면 JPA는 영속성 컨텍스트와 같은 내부 구현체를 통해 동작하다 보니, 마치 베일에 가려진 것처럼 내부 동작을 파악하기가 어려운 것 같습니다.
그중에서도 연관관계 매핑은 매우 까다로워서, 상당한 경험과 노하우가 필요하다고 생각합니다.
아직 JPQL이나 QueryDSL까지는 학습하지 못했지만, 이 부분 역시 만만치 않을 것이라고 예상합니다.