Home
Dal Blog
Cancel

N+1 문제

JPA의 N+1 문제 1 : N 매핑을 하면서 나타날 수 있는 N+1 문제에 대해 알아본다. N+1 문제란? N+1이란 엔티티 하나를 조회하기 위해서 연관된 엔티티까지 조회 쿼리문이 N+1번 날라간다. 이로 인해 시스템에 심각한 성능 저하가 일어날 수 있다. 이러한 부분을 N+1 문제라고 한다. N + 1 문제는 연관관계가 설정된 엔티...

Proxy

프록시란? 프록시(Proxy)란 ‘대리’라는 의미로, 네트워크 기술에서는 프로토콜에 있어서 대리 응답 등에서 친숙한 개념이다. 보안 분야에서는 주로 보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신을 할 경우 그 상이에 있어서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 ‘프록시’, 그 중계 기능을 하는 것을 프록시 서버라고 부른다....

Postman login

Postman FetchType.Lazy로 인한 오류를 해결하면서 응답받는 값을 체크하기 위해 Postman을 사용했다. 그런데 하나 문제가 있었고 이를 기록했다. 로그인 문제 체크해야할 부분은 Comment이기 때문에 “/Comment” GET Method를 테스트를 진행했다. js에서 registryId(게시글 id)값을 주면 regis...

Query did not return a unique result

query did not return a unique result: 해당 오류는 Repository에서 Return 값을 Class로 받아 담을 수가 없어서 에러가 발생한 것이다. Repository의 Return 타입을 Class에서 List<Class> 로 받아주면 해결된다. // Commnet findAllByRegistry_Id...

연관관계 적용4 정리(코드 + mysql)

연관관계 매핑 정리(코드 + MySQL) 이 전에 연관관계 이론에 대해서 정리하고 연관관계를 코드에 적용한 후 refactoring을 진행했다. 그리고 그 과정에서 궁금했던 점도 해결했다. 이번엔 마지막으로 한번 더 정리하는 겸으로 글을 작성했고 db에서 fk를 설정하는 방법에 대해 정리했다. 관련 글 연관관계 연관관계 적용 연...

Findbyid vs getreferencebyid

findById() vs getReferenceById() findById()는 EAGER방식의 조회기법이라면 getReferenceById(ID)는 LAZY방식으로 조회된다. getReferenceById(ID) 는 실제 테이블을 조회하는 대신 프록시 객체만 가져온다. 프록시 객체만 있는 경우 ID 값을 제외한 나머지 값을 사용하기 전까지는 실...

Dto⇄entity

public Registry(RegistryDto registryDto) { this.title = registryDto.getTitle(); this.main = registryDto.getMain(); this.nickname = registryDto.getNickname(); } 위 코드를 뭐라고 부를까? Registty...

Optional

Optional Optional을 찾아보게 된 이유 Repository.findById() List<Long> allByIdx = registryRepository.findAllByIdx(); List<Long> temp = new LinkedList<>(); temp.addAll(allByIdx); ...

Spring data jpa

Spring Data JPA Repository.findById() List<Long> allByIdx = registryRepository.findAllByIdx(); List<Long> temp = new LinkedList<>(); temp.addAll(allByIdx); List<Optio...

연관관계 적용3(궁금증 해결하기)

문제 상황 일대다 관계인 Registry와 Comment 연관관계 매핑을 마치고 Comment에 있던 registryId와 registryNickname 필드를 없앴다. 👉🏻 연관관계 적용2(refactoring) (매핑으로 인해 Comment.getRegistry().getIdx() 하면 되므로) 그래서 해당 필드를...