在 Blog 網頁中,很重要的功能之一是評論留言的項目,而評論除了要記錄留言內容之外,也會需要紀錄留言者等資訊,複雜度上會需要一個 table 去作紀錄,所以需要將其封裝成一個 Entity。實作的流程會像是之前的 Post 一樣。以下將會敘述開發的內容。
首先要在 entity 這個 package 中建立一個 Comment 這個 class。
在 Comment.java 中使用以下:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Comment{
@Id
@GeneratedValue(strategy=GenerarionType.IDENTITY)
private long id;
private String name;
private String email;
private String body;
@ManyToOne(fetch=FetchType.Lazy)
@JoinColumn(name = "post_id", nullable=false)
private Post post;
}
以下為細節紀錄及說明:
其中的 FetchType.Lazy 會讓 Hibernate 根據關係抓取相對應的欄位,藉此進行 table 的 mapping
使用 join column 去作 Foreign key 的對照
在 Post.java 這個 class 中使用 Set 去存 comment,避免重複
CascadeType.java 中有不同的 parameter: ALL, PERSIST
@OneToMany(mappedBy="post", cascade=CascadeType.ALL, orphanRemoval = true)
private Set<Comment> comments = new HashSet<>();
建立一個 Interface 命名為 CommentRepository.java
@Repository
public interface CommonRepository extends JpaRepository<Comment, Long>{
}
以上是 Comment 功能實現的初步實作,後續將 Comment 功能實作完成並作測試~~ 有興趣的記得來看喔~
明天見~