Spring

Spring - 작성자 체크하기

jaewoo 2023. 2. 9. 17:05

 

원래 기존 코드는 Querydsl을 사용하여  

이런식으로 작성자와 Room에 연관된 Hotel에 writer 열을 현재 로그인한 사용자가 맞는지 체크하는 메소드를 만들어서 사용하려 했는데 이렇게 사용할 경우 컨트롤러에서는 쿼리가 두 번 생성되어 날라간다.

 

기존 자세히 보기로 필요한 select from where id =? 쿼리 하나와 작성자가 맞는지 체크하는 쿼리

 

이런식으로 날라간다. 쿼리 한 번으로 해결할 수 있을 거 같아 합쳐봤다.

 

FETCH JOIN은 기본적으로 OneToMany 관계는 하나 초과해서 같이 못 부르지만 ManyToOne은 부를 수 있다.

 

여기서 RoomImage는 Room과 OneToMany이다. Hotel은 ManyToOne의 관계를 갖는다.

메소드를 동작시켜 본다면

left outer join이 두 개 형성되어 날아간다. 한 연관관계가 ManyTOOne이라 그렇다.

 

이렇게 받아온 데이터를 통해 

현재 접속한 사용자 이메일과 room과 ManyToOne 관계를 갖는 호텔에 writer와 같은지 체크하여 cheking 값을 넘겨준다. 

기존 Controller 코드가

이런식이었다면

이렇게 변경되고 쿼리도 두번 날라갈 거를 한 번으로 줄일 수 있었다. ResponseDTO를 따로 만드는 편이 나중에 추가 되는 코드를 위해서 좋은 점이 많은 것 같다.

'Spring' 카테고리의 다른 글

Spring - Filter  (0) 2023.03.30
Spring - DispatcherServlet  (0) 2023.02.24
Spring - AOP,@Transactional  (0) 2023.01.27
Spring - Session  (0) 2022.12.26
Spring - Cookie  (0) 2022.12.23