JPA
-
JPA 네이티브 쿼리와 하이버네이트 1차 캐시개발자 라이프 2020. 1. 14. 21:46
들어가며 Spring에서 제공하는 JPA(Java Persistent Api)는 특정 키워드로 간편하게 쿼리를 생성해주는 쿼리 메소드(Query Method)를 제공해준다. 또한 사용자가 직접 쿼리를 작성하는 네이티브 쿼리(Native Query) 방식도 지원한다. 이번 글은 JPA의 네이티브 쿼리 방식으로 쿼리를 사용할 때, 하이버네이트 1차 캐시와 관련하여 발생할 수 있는 이슈에 대해 다뤄본다. JPA 네이티브 쿼리와 하이버네이트 1차 캐시 하이버네이트 1차 캐시 (Hibernate first-level cache) 데이터베이스와 커넥션을 맺고 조회하여 결과를 가져오는 과정은 매우 무거운 과정이다. 이런 무거운 과정을 줄이고 성능을 향상하기 위해 하이버네이트는 1차, 2차 캐시를 제공한다. 하이버네이..
-
삽질기 - Could not write JSON: failed to lazily initialize a collection of role개발자 라이프 2019. 8. 11. 20:12
삽질의 여정 이번 삽질의 여정은 다음과 같다. 에러 발생 - 지연 로딩 삽질 (1) 디버깅 - PersistentBag 삽질 (2) 로그 찍기 - 지연 로딩 꼼수 삽질의 종착지 - OSIV(Open Session In View) 마무리 이번 글에서는 지연 로딩에 관한 삽질기지만, 지연 로딩을 자세하게 다루지는 않겠다. 에러 발생 - 지연 로딩 서비스의 Restful API를 개발하고 있었다. Schedule 엔티티의 정보를 수정을 API로, 응답 값으로 수정된 Schedule를 내려줘야했다. MVC 패턴으로 개발하고 있었기에 다음과 같은 순서로 로직이 처리됐다. 컨트롤러 단에서 요청을 받는다. 컨트롤러가 서비스 단으로 파라미터를 전달한다. 서비스가 수정 로직을 처리한다. 서비스가 수정된 Schedule ..