• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문이 있습니다

19.05.08 13:18 작성 조회수 115

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

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

board id = 3번쨰에 

2번쨰 댓글이라고 한다면 

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

0

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

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