@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
6
投稿した質問数 1
[강의]
간단한 주문 조회 V1 : 엔티티를 직접 노출
[시간]
8분 25초
[질문 내용]
양방향 연관관계로 인한 무한 루프 문제까지는 발생하였고, @JsonIgnore로 해결하였습니다.
그런데 강의 내에서 지연 로딩으로 인해 발생하는 "Internal Server Error"가 발생하지 않고 아래 사진과 같이 200 OK가 뜨면서 조회 결과가 나옵니다 ㅜㅜ
강의와 같은 에러가 발생하지 않는 이유를 모르겠습니다...
回答 2
0
오류가 나지 않더라도 일단 강의를 따라해보려고 했는데 오류가 나서 찾아보니 Hibernate7에서는 Hibernate5JarkartaModule 자체가 동작하지 않는 것 같습니다!
지연로딩으로 인한 오류가 발생하지 않은 것도 강의보다 Hibernate 버전이 높아지면서 이에 대한 해결책(?)이 마련되어 있어서 그랬던 것 같습니다.
혹시 저랑 비슷한 분들이 있을까봐 댓글 남깁니다!
0
안녕하세요, 인프런 AI 인턴입니다. Soo_6님.
강의에서 지연 로딩 (Lazy Loading)으로 인해 발생하는 “Internal Server Error”는 주로 연관된 엔티티가 Jackson에 의해 직렬화될 때 발생합니다. 특히, JPA 엔티티를 JSON으로 변환할 때 Jackson 라이브러리가 Hibernate의 프록시 객체를 처리하지 못할 때 이러한 에러가 발생합니다. 일반적으로 이런 경우에는 @JsonIgnore를 통해 무한 루프 문제를 해결하지만, 지연 로딩된 프록시 객체를 직렬화할 수 없기 때문에 오류가 발생하는 것이 일반적입니다.
그러나, 발생하지 않는 이유는 몇 가지 원인이 있을 수 있습니다:
라이브러리 버전 차이: 사용 중인 Jackson이나 Hibernate의 버전에 따라 내부 동작이 다를 수 있습니다. 최근 버전에서는 지연 로딩 프록시를 좀 더 유연하게 처리할 수 있을 수도 있습니다.
구현 환경의 차이: 프로젝트 환경 설정이 강의에서 제시된 것과 다르거나, Spring의 기본 설정이 다를 경우 발생할 수도 있습니다.
Spring 설정:
Hibernate5Module을 사용하여, Hibernate의 지연 로딩 프록시 객체를 Jackson에서 제대로 직렬화하도록 설정한 경우, 해당 에러를 방지할 수 있습니다. 만약 이를 설정해두었다면 문제가 발생하지 않을 것으로 예상됩니다.
더 자세한 내용을 알고 싶으시면, 유사한 문제에 대한 해결책을 다루고 있는 몇 가지 자료를 참조하시면 도움이 될 수 있습니다:
“간단한 주문 조회 V1: 엔티티 직접 노출”에 대한 답변은 @JsonIgnore를 사용하지 않고도 무한 루프 문제를 해결하는 방법을 설명합니다.
“Could not write JSON: failed to lazily initialize a collection of role”는 지연 로딩 관련 문제의 해결 방법에 대해 논의하고 있습니다.
지연 로딩 문제는 다양한 환경적 요소에 따라 다르게 나타날 수 있습니다. 특정 시나리오에서 다른 결과가 나타난다면 코드나 설정을 구체적으로 검토해 보시길 권장 드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의 관련 외 질문입니다.
0
85
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
102
1
BeanCreationException
0
99
3
Update 후 UpdateMemberResponse 매핑할 때
0
59
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
104
2
페이징 + 검색조건 관련해서 질문드립니다.
0
75
1
Query Dsl Q파일 질문입니다.
0
87
1
루트 쿼리라는것은
0
64
1
메서드를 분리하는 기준
0
73
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
117
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
92
2
fetch join과 영속화와 OSIV의 관계
0
94
2
Distinct 사용 전 결과에 대한 의문
0
121
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
63
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
79
2
dto 필드 속 엔티티 여부
0
65
1
뷰템플릿 사용 시
0
83
2
Result 클래스 관련 질문
0
58
1
@PostConstruct 프록시 관련 질문드립니다
0
89
1
DTO 대신 Form 사용은 안되나요?
0
141
1
OSIV ON 상태일 때
0
101
1
fetch join VS fetch join 페이징 궁금증
0
191
2
양방향 연관관계 알아보는 법?
0
111
1
16강 17강 간단 정리 이게 맞을까요 ?
0
169
2

