해결된 질문
작성
·
209
·
수정됨
0
안녕하세요. 서비스에서 select 해온 Entity에 toMany 연관관계 필드를 초기화 하는 부분에 대해 궁금해 질문드립니다.
class AEntity{
@Id
private Long id;
@OneToMany(mappedBy=aEntity)
private List<BEntity> bEntitise = new ArrayList<>():
}
class BEntity{
@Id
private Long id;
@ManyToOne(fetch = FetchType.Lazy)
@JoinColumn(name="a_id")
private AEntity aEntity;
}
이렇게 서로 양방향인 엔티티가 있다고 했을 때
class AService{
public AEntity findEntity(Long id){
AEntity findEntity = aRepository.findById(id).get();
//findEntity의 BEntityList를 lazy 초기화 하기 위한 코드
findEntity.getBEntities().size();
return findEntity;
}
}
서비스에서 엔티티를 찾아 컨트롤러로 리턴해주어 컨트롤러에서 dto로 변환 후, Body에 담아 보여주고 있습니다.
그런데 findEntity의 BEntities 필드를 서비스에서 초기화 시켜준 후 컨트롤러에서 DTO로 변환해야 LazyInitializationException이 발생하지 않아서 findEntity.getBEntities().size();
이렇게 초기화를 해주는 코드를 작성하였는데
해당 코드가 뜬금없이 들어가 있는 느낌이라 보통 컬렉션 Lazy 엔티티를 초기화할 때 저렇게 사용해도 되는지 궁금해서 질문드립니다.(fetch 조인은 사용하지 않는다는 가정입니다.)