Hibernate 發布包含 23 個 JAR,令人眼花撩亂。本文詳細分類說明每個 JAR 的用途,幫助開發者依專案需求精準引用,避免 Classpath 膨脹。
| JAR 檔名 | 功能說明 |
|---|---|
hibernate2.jar / hibernate3.jar | Hibernate 核心程式庫,ORM 引擎、HQL 解析、Session 管理等核心功能。 |
cglib-asm.jar | CGLIB 位元碼操作庫,用於動態產生 POJO 子類別 (Lazy Loading、攔截器),核心依賴。 |
dom4j.jar | 高效能 XML 解析器,讀寫映射檔 (*.hbm.xml) 及設定檔,效能優於 JDOM/JAXP。 |
odmg.jar | ODMG 3.0 規範介面實作,提供標準化 ODMG API 支援。 |
commons-collections.jar | Apache Commons Collections,擴充 Java Collections Framework,Hibernate 內部大量使用。 |
commons-beanutils.jar | JavaBean 內省與屬性操作工具,Hibernate 映射屬性存取仰賴此庫。 |
commons-lang.jar | java.lang 擴充工具類 (StringUtils, ObjectUtils 等),基礎依賴。 |
commons-logging.jar | 日誌門面介面,執行時自動偵測 Log4j / JDK Logging / SimpleLog,建議搭配 Log4j 使用。 |
| JAR | 提供者 | 備註 |
|---|---|---|
c3p0.jar | C3P0 | 成熟穩定,支援 JDBC3 標準。 |
proxool.jar | Proxool | 輕量級,配置簡單。 |
commons-dbcp.jar + commons-pool.jar | Apache DBCP | Tomcat 內建連線池,通用性佳。 |
| (內建) | Hibernate 簡易連線池 | 僅適開發測試,生產環境勿用。 |
重要:若在 EJB 容器 (WebLogic, WebSphere, JBoss) 中運行,必須使用容器提供的 DataSource (JTA),不可使用上述獨立連線池,否則容器管理交易 (CMT) 會失效。
| JAR | 用途 |
|---|---|
ant.jar, optional.jar | Ant 建構腳本編譯 Hibernate 原始碼用。 |
junit.jar | 執行 Hibernate 內建單元測試用。 |
connector.jar | JCA 規範,將 Hibernate 部署為 JCA Connector 時需用,通常 App Server 已內建。 |
jaas.jar | JAAS 認證授權,JDK 1.4+ 已內建。 |
jta.jar | JTA 規範介面,App Server 內建。 |
jdbc2_0-stdext.jar | JDBC 2.0 擴充介面 (DataSource 等),App Server/JDK 內建。 |
xalan.jar, xerces.jar, xml-apis.jar | XSLT/XPath 處理器與 XML 解析器 (JAXP 實作),JDK 1.4+ 內建 Crimson/Xalan,通常不需額外引入。 |
| JAR | 功能 |
|---|---|
jcs.jar | JCS (Java Caching System) 二級快取提供者,若採用 JCS 需引入。 |
ehcache.jar | EhCache 二級快取提供者 (較常用),需另行下載。 |
log4j-x.x.x.jar | Log4j 實作,建議引入以獲得完整日誌功能。 |
典型獨立應用專案 WEB-INF/lib 或 Classpath 僅需:
hibernate3.jar
cglib-asm.jar
dom4j.jar
commons-collections.jar
commons-beanutils.jar
commons-lang.jar
commons-logging.jar
log4j.jar (若使用 Log4j)
c3p0.jar / dbcp.jar (選一連線池)
JDBC Driver.jar
其餘 JAR 請勿放入運行時 Classpath,避免版本衝突與記憶體浪費。