diff --git a/src/main/java/com/pt/Item/CommentInfo.java b/src/main/java/com/pt/Item/CommentInfo.java
new file mode 100644
index 0000000..a4a20db
--- /dev/null
+++ b/src/main/java/com/pt/Item/CommentInfo.java
@@ -0,0 +1,68 @@
+package com.pt.Item;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+public class CommentInfo {
+
+    private int commentId;
+    private String content;
+    private String writer;
+    private int parentPost;
+    private LocalDateTime publishDate;
+    private String reviewer;
+    private int reviewerId;
+
+    public CommentInfo() {
+    }
+    public CommentInfo(int commentId, String content, String writer, int parentPost, LocalDateTime publishDate) {
+        this.commentId = commentId;
+        this.content = content;
+        this.writer = writer;
+        this.parentPost = parentPost;
+        this.publishDate = publishDate;
+    }
+
+    public int getCommentId() {
+        return commentId;
+    }
+    public void setCommentId(int commentId) {
+        this.commentId = commentId;
+    }
+    public String getContent() {
+        return content;
+    }
+    public void setContent(String content) {
+        this.content = content;
+    }
+    public String getWriter() {
+        return writer;
+    }
+    public void setWriter(String writer) {
+        this.writer = writer;
+    }
+    public int getParentPost() {
+        return parentPost;
+    }
+    public void setParentPost(int parentPost) {
+        this.parentPost = parentPost;
+    }
+    public LocalDateTime getPublishDate() {
+        return publishDate;
+    }
+    public void setPublishDate(LocalDateTime publishDate) {
+        this.publishDate = publishDate;
+    }
+    public String getReviewer() {
+        return reviewer;
+    }
+    public void setReviewer(String reviewer) {
+        this.reviewer = reviewer;
+    }
+    public int getReviewerId() {
+        return reviewerId;
+    }
+    public void setReviewerId(int reviewerId) {
+        this.reviewerId = reviewerId;
+    }
+}
