웹프로그래밍
[JPA]
Repository Query left outer join
select b, w from Board b left join b.writer w where b.bno=:bno
- n:1 관계에서 n쪽이 left join의 왼쪽에 위치할 때는 조인 조건을 명시하지 않는다
- 조인 시 해당 클래스 타입으로 리턴하지 않고 Object로 리턴
- from절에는 table 이름이 아니라 클래스 이름 적기
- return 타입 주의하기
return이 Object이기 때문에 사용시에도 Object타입으로 리턴
Object => Object[] => [{bord객체}, {member객체}]
이렇게 들어가있음
그래서 사용할 때
Object result = repository.getOuterJoin(100L);
Object[] arr = (Object[])result;
이렇게 사용하면 된다
---------------
select b, r from board b left join Reply r on r.board = b where b.bno = :bno
- Board : Reply = 1: n 즉 두 테이블간의 연결 정보는 N쪽인 reply에 있다
- Board쪽에는 reply로 연결되는 정보가 없기 때문에 명시적으로 조인 조건을 적어줘야 한다
- [{Board}, {Reply}]의 배열을 원소로 가지는 리스트가 반환된다
- 반환되는 리스트의 원소 수는 그 게시글의 댓글의 수와 같다
---------------------
jpql(java persistence query language)
게시글, 작성자, 댓글을 한번에 보여줘야함
게시글을 중심에 두고 조인을 해나감
sql
select b.*, m.name, m.email, count(r.rno)
from board b left join member m ON b.writer_email = m.email
left join reply r on b.bno = r.board_bno;
where b.bno = 100
group by b.bno
group by 전 >> 댓글 수 만큼 쿼리 결과가 나옴
group by 후 >> 게시글 수 만큼 쿼리결과가 나옴
>> 다음수업에 jpa 코드 보여줌
tip)
Array 를 출력하려고 하면 의미 없는 값이 찍히는데(코드값)
안의 내용을 다 보려고 하면
java util에 Array.toString(arr) 을 사용하면 배열안의 하나 하나에 toString 을 찍는다
[Spring] JPA 기본키 자동 생성 방법 (참고사이트) (0) | 2022.01.13 |
---|---|
[spring] 메일 전송 구현 (0) | 2021.04.06 |
[IntelliJ][Git] 인텔리제이에서 깃 연동하기 (0) | 2021.02.23 |
[Git] 깃 환경 (0) | 2021.01.20 |
[Git] 깃 설정하기 (0) | 2021.01.20 |