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

J2EE 應用數據庫類設計模式:實體類與會話類實戰解析

     編輯:Java 相關知識

設計模式核心思想

開發 J2EE 應用時,需將業務信息(如產品目錄、用戶數據)映射到數據庫表。本文介紹一種將數據庫相關類劃分為實體類與會話類的設計模式:

  • 實體類:對應表的一條記錄,實例屬性與表字段一一映射,僅封裝數據(提供 get/set 方法)。
  • 會話類:對應表的所有記錄操作(增、刪、改、查),負責實體實例與數據庫記錄的映射轉換。

此模式使程序模塊化,便於開發維護。

程序實現:以圖書查詢系統為例

1. 實體類

class Book {
    protected int ID;
    protected String Name;
    protected String ISBN;
    protected String Author;
    protected int PublisherID;
    protected double Price;
    protected int Volume;
    // 構造函數、get/set 方法省略
}

同理可封裝 Publisher 表。實體實例為內存中記錄的映射,操作不直接反映到數據庫。

2. 會話類

class BookTable {
    void Add(Book book);
    void Delete(Book book);
    void Update(Book book);
    Collection findByID(int id);
    Collection findByPublisherName(String name);
    // 其他查找方法...
}

多表操作可封裝專門類,或在會話類中添加關聯查詢方法(如 findByPublisherName 返回 Book 集合)。

事務處理關鍵點

1. JDBC 本地事務

關閉 auto-commit 模式,手動控制提交:

con.setAutoCommit(false);
PreparedStatement ps1 = con.prepareStatement("UPDATE COFFEES SET SALES=? WHERE COF_NAME LIKE ?");
ps1.setInt(1, 50); ps1.setString(2, "Colombian"); ps1.executeUpdate();
PreparedStatement ps2 = con.prepareStatement("UPDATE COFFEES SET TOTAL=TOTAL+? WHERE COF_NAME LIKE ?");
ps2.setInt(1, 50); ps2.setString(2, "Colombian"); ps2.executeUpdate();
con.commit();
con.setAutoCommit(true);

2. J2EE 分布式事務

使用 JTA 調用底層 JTS 處理分布式事務;若用 EJB,可在部署描述符中聲明事務屬性。具體細節請參考 J2EE 規範。

技術選型建議

EJB 適合分布式系統,容器管理事務、安全等底層服務,開發者專注業務邏輯。但非分布式場景下,EJB 呼叫開銷大,可能嚴重降低性能。本文重點探討非 EJB 環境下的實現方案。

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