인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

blossom_mind님의 프로필 이미지
blossom_mind

작성한 질문수

스프링 데이터 JPA

질문이 있습니다

작성

·

212

0

board 테이블 (원글 부모글)

comment 테이블 (댓글)

 

있다고 가정했을떄 ..

 

comment가 DB에 입력이 되어야 하니까

@ManyToOne

Board board;

이런식으로 들어가자나요 ??? entity 클래스에서요 

근데 sql적으로 보면 board글의 몇번에 comment 자나요 ?

ex ) boardId=10 번의 코멘트 10개 뭐 이런식이니까 

boardId를 Comment클래스에 @ManyToOne을 적용시킬떄는 

아무 표기를 안해줘도 되는건가요 ???

 

그럼 만약에 글번호 5번에 대한 코멘트를 저장할려면 

@ManyToOne 만 명시하고 

레포지토리.save(comment객체); 

이런식으로 해도되는걸까요 ? 그러면 부모글의 몇번글에 대한 코멘트인지 모르지 않나요 ??

 

아직 초짜라 강의 2번쨰 듣는데 ..궁금한게 있어서 질문드립니다 .

 

답변 3

0

백기선님의 프로필 이미지
백기선
지식공유자

JPA라서 그걸 만들어 주는게 아니라 hbm2ddl에서 create또는 update 이런걸로 설정해둔 경우에 엔티티에 맵핑되는 테이블을 만들어주기 때문에 그런게 생기는거구요. validate로 설정하면 만들어 주진 않고 맵핑이 되는지 검사만 합니다.

말씀하신대로 @ManyToOne만 사용하면 그렇게 되긴하지만 항상 자식 테이블쪽에 FK가 생기는 거라고 이해하시면 안되요. 그건 맵핑 애노테이션을 쓰기 나름이에요. 원한다면 관계를 관리하는 테이블로 맵핑 시킬 수도 있습니다.

0

blossom_mind님의 프로필 이미지
blossom_mind
질문자

제가 궁금한게 .sql로 질문드리면. 

board id = 3번쨰에 

2번쨰 댓글이라고 한다면 

comment 테이블은 보통 board_id=3, comment_id=2  ...... 이렇게 db에 들어가는데 .jpa에서는 ManytoOne만 해주면 자식 테이블 그러니까 comment 테이블에 자동으로 board_id 칼럼이 생기는건가요 ?

0

백기선님의 프로필 이미지
백기선
지식공유자

 게시물에 달린 댓글의 순서는 여러 가지 방법으로 관리할 수 있는데 가령, 댓글 등록 시간 기준으로 정렬해서 보여주거나, 좋아요가 많은 순으로 보여주거나, 직접 댓글 순서를 DB에 저장해서 관리하거나.. 그런건 비즈니스 로직에 따라 달라질 수 있습니다.

단순히 관계를 맺는다고 "몇번째 맺어진 관계"이냐 까지 JPA나 DB가 정해주는건 아닙니다.

blossom_mind님의 프로필 이미지
blossom_mind

작성한 질문수

질문하기