lazyloading 2

[트러블슈팅] getReferenceById를 이용한 연관 관계 저장 최적화

문제 상황특정 엔티티를 다른 엔티티의 외래 키(FK)로 저장할 때, 기존에는 findById를 사용하여 해당 엔티티를 DB에서 완전히 조회한 후 세팅하는 방식을 사용했습니다.를 사용하여 해당 엔티티를 데이터베이스에서 완전히 조회한 후 세팅했습니다. 하지만 단순히 연관 관계를 맺기 위해 전체 데이터를 SELECT 하는 것이 비효율적이라는 판단하에 리팩토링을 진행했습니다. java@Transactionalpublic void addFavorite(Long announceId, Long memberId) { Member member = memberRepository.findById(memberId) .orElseThrow(() -> new EntityNotFoundException()); ..

[트러블슈팅] @OneToOne(mappedBy) LAZY 로딩이 동작하지 않는 이유와 해결 방법

문제 상황회원가입 및 로그인 기능을 구현하던 중 memberRepository.findMemberByEmail() 메서드를 호출했을 때, 조회하지 않은 연관 엔티티의 쿼리까지 함께 실행되는 문제가 발생했습니다.단순히 Member만 조회했지만 실제로는 다음과 같은 SQL이 실행되었습니다. sqlSELECT * FROM member WHERE email = ?SELECT * FROM business WHERE member_id = ?SELECT * FROM profile_image WHERE member_id = ?SELECT * FROM auth WHERE member_id = ? @OneToOne(fetch = FetchType.LAZY)로 설정했기 때문에 연관 엔티티는 실제 접근 시점에 Lazy Lo..