首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 留言板教學(一):資料庫結構與 POPO 設計

     編輯:Java 相關知識

本系列將手把手帶你從零構建一個經典的 Java Web 留言板系統。首篇聚焦資料庫結構設計與POPO(Plain Old Java Object)實體類別,為後續的 DAO、Service、Controller、JSP/JSTL 視圖層打下堅實基礎。

資料庫 ER 圖與表結構

留言板核心業務:主題貼文、回覆貼文、用戶。採用「自關聯」設計,單表儲存主題與回覆,透過 parent_id 區分層級。

留言板資料庫 ER 圖

核心表:message_board

欄位型別說明
idINT PK AUTO_INCREMENT主鍵
parent_idINT父貼文 ID,0 表示主題貼
user_idINT發文用戶 FK
titleVARCHAR(200)主題標題(回覆可為空)
contentTEXT貼文內容
post_timeDATETIME發文時間
statusTINYINT狀態:1 正常、0 刪除

用戶表:users

欄位型別說明
idINT PK AUTO_INCREMENT主鍵
usernameVARCHAR(50)唯一用戶名
passwordVARCHAR(100)加密密碼
emailVARCHAR(100)信箱
reg_timeDATETIME註冊時間

POPO 實體類別

對應上述兩張表,建立 Message 與 User 類別,遵循 JavaBean 規範,含無參建構子、私有屬性、公共 getter/setter,並實現 Serializable 便於 Session 傳遞。

public class Message implements Serializable {
    private Integer id;
    private Integer parentId;   // 0 = 主題貼
    private Integer userId;
    private String title;
    private String content;
    private Date postTime;
    private Integer status;

    // 關聯對象(非 DB 欄位,Service 層組裝)
    private User user;          // 發文用戶詳情
    private List<Message> replies; // 子回覆列表

    // getter/setter 略
    // equals/hashCode 基於 id 實現
}

public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private String email;
    private Date regTime;
    // getter/setter 略
}

設計要點

  1. 自關聯遞歸:parent_id=0 為根節點,>0 為回覆,支援無限層級巢狀回覆。
  2. 軟刪除:status 欄位而非物理刪除,保留資料完整性。
  3. 關聯對象分離:user、replies 不映射 DB 欄位,由 Service 層組裝,避免 ORM 過度抓取。
  4. 時間型別:統一用 java.util.Date,DAO 層處理 Timestamp 轉換。

下一篇將實作 MessageDAO 與 UserDAO,採用 JDBC Template 封裝 CRUD,敬請期待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved