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

BeanKeeper:零配置 Java 對象持久化框架快速上手

     編輯:Java 相關知識

為什麼選擇 BeanKeeper?

主流 ORM (Hibernate, Spring Data JPA) 功能強大但學習曲線陡峭、需大量 XML/註解配置、模型變更維護成本高。BeanKeeper (LGPL, 純 Java) 主打零配置、三介面上手、透明支援集合、自動分頁、跨資料庫可移植,適合中小型專案快速落地。

核心架構與特性

  • 三大介面: Store (儲存/查詢/刪除)、TransactionTracker (事務監聽)、Query 介面。
  • 零配置: 僅需 JDBC URL,自動建表、映射、主鍵生成。
  • 集合透明化: List/Set/Map 直接持久化,自動處理多對多、繼承關係。
  • LazyList 自動分頁: 百萬筆資料查詢不爆記憶體,size() 仍回傳總筆數。
  • 面向對象查詢語言: 類 SQL 但操作對象屬性,免寫原生 SQL。
  • 跨資料庫: 屏蔽 Null 語義、大小寫敏感、保留字等差異。
  • 事務支援: 显式/隱式事務邊界、提交回滾監聽。

快速開始:5 分鐘建立持久化

1. 依賴 (BeanKeeper 2.6.0 + Commons + Log4j + MySQL Driver)

commons-lang-2.4.jar, commons-io-1.4.jar, commons-logging.jar,
commons-collections-3.2.1.jar, commons-configuration-1.6.jar,
log4j-1.2.15.jar, mysql-connector-java-5.0.8-bin.jar

2. 定義 Bean 類別 (POJO 慣例)

public class EmployeeBean {
    String id, name; int age; Date onBoardTime;
    // getter/setter 略
}

3. 儲存對象

Store store = new Store("org.gjt.mm.mysql.Driver",
    "jdbc:mysql://localhost:3306/lhq?user=root&password=sa");
// 從 CSV 讀取並存入
List lines = FileUtils.readLines(new File(csvFile));
lines.remove(0); // header
for (String line : lines) {
    String[] d = line.split(",");
    EmployeeBean b = new EmployeeBean();
    b.setId(d[0]); b.setName(d[1]);
    b.setAge(Integer.parseInt(d[2]));
    b.setOnBoardTime(Date.valueOf(d[3]));
    store.save(b); // 一行搞定
}

自動在資料庫生成 classes、tablemap (映射元數據)、employeebean (資料表) 等表。

BeanKeeper 版本 生成資料表 classes 表 tablemap 表 employeebean 表

查詢與事務

對象查詢語言 (BKQL)

String q = "find EmployeeBean where age<30 and onBoardTime>='2005-01-01' order by id";
List emps = store.find(q); // 回傳 LazyList
for (EmployeeBean e : emps) System.out.println(e.getName());
// emps.size() 可得總筆數,不載入所有資料
EmployeeBean single = store.findSingle(q); // 只取第一筆

事務控制

// 显式事務
TransactionTracker tt = store.getTransactionTracker();
tt.addListener(new TransactionListener() {
    public void transactionCommited(Transaction t) { log("commit"); }
    public void transactionRolledback(Transaction t) { log("rollback"); }
});

// 程式碼中手動邊界 (BeanKeeper 2.6 需配合 Store 實作)
// 通常每個 save/remove 即隱式事務,批量操作建議手動控制

與主流框架比較

特性BeanKeeperHibernateSpring Data JPA
配置複雜度零 (僅 JDBC URL)高 (XML/註解)中 (註解+Repository)
學習曲線極低 (3 介面)高中
集合透明化原生支援需映射設定需映射設定
自動分頁LazyList 內建需 ScrollableResults需 Pageable
適用場景中小專案、快速原型企業級複雜系統Spring 生態專案

結語

BeanKeeper 以「簡單的事簡單做」為哲學,犧牲部分進階功能換取極致的開發效率。若您專案規模中等、團隊希望避開繁瑣 ORM 設定、且需快速交付,它是極佳選擇。下載試用,體驗零配置持久化的輕快感。

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