인프런 커뮤니티 질문&답변
애노테이션으로 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로인한 프록시 문제와 양방향 무한 순환참조 문제를 해결했는데요
이렇게 애노테이션을 이용해서 문제를 해결하면 실무에서 문제가 없을지 궁금해서 질문 올립니다.





