Comment 엔티티와 리파지터리

기사와 댓글의 관계는 일대다입니다.

(하나의 게시물에 여러 개의 댓글이 있습니다.)

이 데이터는 DB에 어떻게 저장됩니까?

댓글,

(아이디/댓글내용/닉네임/게시물아이디)는 저장됩니다.

이때 게시물 ID를 저장하면 어떤 댓글인지 알 수 있다.

데이터 자체를 나타내는 ID를 PK(Primary Key)라고 하고 객체를 가리키는 ID를 FK(Foreign Key)라고 합니다.

이 경우 자신의 ID는 PK이고 기여 ID는 FK입니다.

주석 저장소는 JpaRepository를 상속받아 사용합니다.

이전에 ArticleRepository에 상속되었던 CrudRepository 외에도 데이터 검색, 특정 페이지 정렬 등의 기능을 사용할 수 있습니다.



먼저 댓글 엔터티를 만들었습니다.

@Entity 주석이 필요합니다.

ID는 @GeneratedValue 주석으로 자동 생성됩니다.

댓글의 상위 게시물에 링크하려면

비공개 기사 기사 필드를 만들었고,

다대일 관계이므로 @ManyToOne 주석을 사용하십시오.

@JoinColumn 주석을 사용하여 기사를 기사의 기본 키(PK)에 매핑하고 열을 기사 ID로 사용했습니다.


댓글 저장소를 만듭니다.

JpaRepository를 상속합니다.

쓰기 방법 findByArticleId,

SQL을 직접 작성하는 방법(네이티브 쿼리 방식)

1. @Query 댓글 달기

2. XML 사용

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
                  http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
                 version="2.0">

    <named-native-query
            name="findCustomerById"
            result-class="com.example.firstproject.entity.Comment" >
        <query>
            SELECT
                *
            FROM
                comment
            WHERE
                nickname=:nickname
        </query>

    </named-native-query>

</entity-mappings>

xml 파일은 resources/META-INF/에 있어야 합니다.