기사와 댓글의 관계는 일대다입니다.
(하나의 게시물에 여러 개의 댓글이 있습니다.)
이 데이터는 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/에 있어야 합니다.