나의 개발 성장일지
테이블 연관관계의 주인(보완필요) 본문
테이블에서 소유권표기하는법
1개의 칼럼은 1개의 정보가들어가야한다.
희찬테이블->예약한차 칼럼->흰차,검은차 ->불가능
차테이블->흰차(희찬소유),검은차(희찬소유) 이렇게 가능
페이지당 테이블간 연관관계를 생각하자
Join은 여러테이블에서 정보를 가져오기위함
Fk는 다른테이블에서 연관정보 가져오는 매개체 -> 가져오는테이블에서 기본키여야함
1.연관관계의 주인 = FK를 가진 오브젝트
2.페이지당 기능구현 생각해보기
2-1 메인페이지-> 페이징당 게시글(Board테이블)
2-2 상세페이지->작성자(User테이블),,제목과내용(Board테이블),댓글(reply테이블)
2-2-1 SQL방식-> 3개의 테이블을 JOIN하여 가져옴
2-2-2 JPA방식 -> Board테이블만 가져오면됨
2-2JPA의원리
2-2-1 페이지에서 테이블간의 관계를 찾아야함
2-2-2 상세페이지->게시글번호클릭(Board테이블기본키)->User외래키,reply외래키->테이블join가져오기
2-2-3 board테이블현황
Board테이블에 replyid가 외래키로 칼럼존재하면 1정규화 원자성이깨진다.
JoinColumn은 테이블에 외래키를 만들어준다
reply는 다수가 올것이므로 JoinColumn사용X->DB 테이블칼럼으로 오면안된다.
Board테이블 Select시 join으로 값구하기위한 재료로 List<apply>에 담아둔다.
2-2-4 mappedby 설정하기 ->외래키는 reply테이블에 board를 사용한다.
2-2-5 Reply테이블 현황
board테이블에 댓글을 저장하면 1개의 칼럼에 다수를 저장해야함->정규화깨짐
reply테이블에 댓글당 어떤 게시글에 썼는지 저장해둔다. ->댓글당 어떤게시글에썼는지 적어둠
2-2-6 테이블참조시 EAGER은 항상 가져오기 LAZY는 선택적가져오기
'개인 공부 > 스프링부트 개념정리' 카테고리의 다른 글
Crud 테스트 2 (0) | 2022.11.21 |
---|---|
DB 칼럼과 Enum제약조건 (0) | 2022.11.21 |
테이블 생성 (0) | 2022.11.20 |
Yml설정하기 (0) | 2022.11.16 |
Lombok과 Maven환경설정 (0) | 2022.11.16 |