spring data jpa 질문입니다.~ 참고하세요

FSP(이종철) 1 5,119 2016.04.15 11:32
>
>
> 안녕하세요. spring data jpa를 접한지 얼마 안되는 초보인데요,
>
> 질문 하나 드리겠습니다.
>
> UserTable(userId, name, adress, ....)
> 위와 같이 유저의 id등의 정보를 갖는 엔티티(table)있고요
>
> Board(userId, title, content, ...)
> 위와 같이 게시판 entity가 있다고 치고
>
> 궁금한것이 게시판 리스트를 구현하는데 spring data 로 리스트를 불러올때 아래와같이 합니다.
> (대략적 형식입니다.)
>
> List<Board> boardList = boardRepository.findAllBy(new Pageable...);
>
> 이때 뷰에서는 userId뿐만 아니라 유저의 이름을 가져와야 하는데요,
>
> 유저의 이름은 UserTable의 name을 참조하여 가져와야 하는데 방법을 모르겠습니다.

==> USER테이블과 BOARD 테이블은 1:N관계 이므로 BOARD 엔티티를 로드할 때 USER 엔티티도 같이 로드하시면 될 것 같구요, BOARD에서 @ManyToOne 매핑을 해야할 것 같습니다,
두 테이블간에는 외래키 관계가 될거구요,
>
> 그리고 findAllBy.. 와 같이 하면 board모든 컬럼(select * 처럼)을 가져오게 되는데,
>
> 불필요한 부분을 빼고 가져 오려면 어떻게 할까요..

==> @Query 또는 Querydsl을 사용하세요, 본 사이트의 JAP 강좌 게시판 참조하시구요.

>
> 정리하면 boardList를 페이징하여 가져오려고 하는데 유저의 이름을 가져와야 하고
>
> Board에있는 모든 컬림이 아닌 게시판 출력에 딱 필요한 정보만을 가져오려면
>
> 어떻게 해야 하는가 입니다. 답변 부탁 드리겠습니다.
>

Comments

개골이 2016.04.15 18:22
답변감사합니다. @ManyToOne의 경우는 모든 유저정보를 갖고 오게 되는데,

실은 유저 이름만 하나 달랑 있으면 되거든요. 이름 하나를 위해 ManyToOne등의 관계를

맺는게 부담이 좀 되서요. 일반적 쿼리였다면 select단에서 sub query를 줬을텐데 말이죠.

spring data에서는 이를 어찌할지..참..

Qeury DSL 부분은 강좌 참조해봐야 겠네요. 감사합니다^^