[트러블 슈팅] JPA - LazyInitializationException과 N+1
·
프로젝트 트러블 슈팅 및 몰랐던점 정리/CommunityAPI
LazyLoding의 기본 동작LazyInitializationException은 영속성 컨텍스트가 종료된 상태에서 LAZY 전략을 사용하려고 할 때 발생한다. @OneToMany 혹은 @ManyToMany (xToMany) 연관관계 매핑 시 기본 전략은 LAZY 전략이다. 이는 실제 데이터에 접근할 때 까지 연관관계의 매핑된 데이터를 로드하지 않는다. 이로 인해 연관관계로 매핑된 엔티티에 대해서 초기화 되지 않은 프록시 객체로 유지되다가 연관관계로 매핑된 엔티티 필드(데이터가 실제로 필요할 때)에 접근하면 데이터베이스에서 실제 데이터를 조회하려고 시도한다. 이 때 JPA는 영속성 컨텍스트가 활성화된 상태에서 프록시를 초기화하고 데이터베이스와 상호작용을 하게되는데, Spring 에서는 트랜잭션의 범위가..
[트러블 슈팅] BindingResult 반환시 발생한 객체 직렬화 문제
·
프로젝트 트러블 슈팅 및 몰랐던점 정리/CommunityAPI
현재 개인 프로젝트를 진행중에 있어서 컨트롤러 클래스에서 요청을받는데, 요청을 받는 DTO 클래스에 BeanValidation 설정을 해놨다. 그런데 여기서 Bean Validation의 검증로직을 통과하지 못한 경우와, 통과가 되어서 정상처리 된 경우에 대해서 두가지 처리를 해야하는 분기가 생겼다. Bean Validaiton의 검증을 통과하지 못한 경우 BindingResult의 정보를 반환하려고 해보니 직렬화 문제가 생겼다.com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.validation.DefaultMessageCodesResolver and ..
[우테코 7기 백엔드 회고] 4주차 편의점
·
회고록
현재 우테코 프리코스의 과제가 끝난 시점에서 1주일이 흘렀다. 4주차에 대한 코드를 다시 보면서 그 때 당시의 문제점들과 배운점들을 토대로 회고 및 느낀점을 작성해보고자 한다. 기능 요구 사항기능 요구사항을 대충 훑어만 봐도 어마어마하다... 이걸 보는 순간 머리가 지끈거리면서 어떻게 구현해나아가야 할지에 대해서 머릿속이 복잡해져나갔었다.게다가 출력에 대한 포맷을 보면 프로젝트 파일에서 products.md 파일과, promotions.md 파일이 있기 때문에 기타 추가 사항 및 변경사항들은 md 파일에서 이루어지며, md 파일에 대한 포맷이 변경될 경우 이를 사용하는 애플리케이션에서는 추가적인 변경사항이 없어야 완벽하게 구현했다고 볼 수 있다. 처음에 이러한 부분을 놓쳐서 다시 설계했었다.비즈니스 로직..
cheolhyeon
'오블완' 태그의 글 목록