강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

kmr345님의 프로필 이미지
kmr345

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

애노테이션으로 Lazy, 순환참조 문제를 해결 해도 되나요?

작성

·

273

0

Drawing 엔티티입니다.
@Entity
@Setter
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Drawing extends BaseEntity {


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "category_id", nullable = false)
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private DrawingCategory drawingCategory;

@JsonManagedReference
@OneToMany(mappedBy = "drawing", cascade = CascadeType.ALL)
List<Floor> floors = new ArrayList<>();
 
 
DrawingCategory는 단방향 매핑입니다. JsonIgnoreProperties를 붙이지 않으면
nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer
에러가 발생합니다. 해당 DrawingCategory의 값을 불러와야 해서 JsonIgnoreProperties 어노테이션을 추가했습니다.
 
Floors는 양반향 매핑입니다. 따라서 순환 참조가 발생하여 JsonManagedReference, ManyToOne에는 sonBackReference 애노테이션을 붙여서 순환 참조 문제를 해결 했습니다.
 
Stackoverflow에 있는 답변을 토대로 애노태이션을 붙여서 Lazy로인한 프록시 문제와 양방향 무한 순환참조 문제를 해결했는데요
 
이렇게 애노테이션을 이용해서 문제를 해결하면 실무에서 문제가 없을지 궁금해서 질문 올립니다.
 

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. kmr345님^^

다음 강의에서 해당 내용을 자세히 다룹니다.

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

감사합니다.

kmr345님의 프로필 이미지
kmr345

작성한 질문수

질문하기