본문 바로가기
Spring Boot/Spring Boot 입문 홍팍

[Spring boot] (22) 댓글 엔티티와 레파지토리

by 몰라닉네임 2023. 8. 18.

Mission
Comment 엔티티와 리파지터리를 만들고  이를 테스트 하시오 


-일대다(게시글 입장), 다대일(댓글 입장) 관계

-crud repository가 아닌 JPA repository를 활용
JPA repositoy 는 crud repository를 확장한 Paging&Sorting repository를 확장한 것으로 데이터  crud 뿐만 아니라 일정 페이지의 데이터 조회 및 정렬 기능을 제공한다. 

-댓글 엔티티
Comment 엔티티 만들기 
Comment 엔티티는 Article 엔티티와 다대일 관계이다.
@JoinColumn 을 통해 FK 를 설정할 수 있다. 

package com.example.firstproject.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.persistence.*;

@Entity
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    //댓글과 부모 게시글과의 관계, 해당 댓글 엔티티 여러개가, 하나의 Article에 연관된다
    @ManyToOne
    @JoinColumn(name = "article_id") // "article_id" 칼럼에 Article의 대표값을 지정
    private Article article;

    @Column
    private String nickname;

    @Column
    private String body;


}

-댓글 레파지토리
//특정 게시글의 모든 댓글 조회를
1. 쿼리 어노테이션을 통해 sql을 직접 작성한것이고 
//특정 닉네임의 모든 댓글 조회를
2. 네이티브 쿼리 XML로 작성 ->  <!-- 구글링 "orm native query orm.xml example" -->
/resources/META-INF/orm.xml



-레파지토리와 테스트 A

-레파지토리와 테스트 B

-요약 
댓글 인테티를 Comment 엔티티로 만들기 
Comment 엔티티는 Article 엔티티와 다대일 관계이다.
@JoinColumn 을 통해 FK 를 설정할 수 있다. 

레퍼지토리에 쿼리 어노테이션을 통해 sql을 직접 작성한 방법과 네이티브 쿼리 XML로 작성하는 방법을 배웠다. 

 




🔥 구글링 훈련하기

  • 일대다 다대일 관계
  • @ManyToOne
  • @JoinColumn
  • JpaRepository
  • @Query
  • JPA native query orm xml
  • @DataJpaTest @SpringBootTest 비교

 

내용참고

https://www.youtube.com/channel/UCpW1MaTjw4X-2Y6MwAVptcQ

 

홍팍

클라우드스터딩 | CloudStudying | 온라인 코딩학습 | 프로그래밍 강의 채널 https://cloudstudying.kr

www.youtube.com