天天看點

hibernate3包作用詳解

Hibernate一共包括了23個jar包,令人眼花缭亂。本文将詳細講解Hibernate每個jar包的作用,便于你在應用中根據自己的需要進行取舍。

下載下傳Hibernate,例如2.0.3穩定版本,解壓縮,可以看到一個hibernate3.jar和lib目錄下有22個jar包:

  • hibernate3.jar:

Hibernate的庫,沒有什麼可說的,必須使用的jar包

  • cglib-asm.jar:

CGLIB庫,Hibernate用它來實作PO位元組碼的動态生成,非常核心的庫,必須使用的jar包

  • dom4j.jar:

dom4j是一個Java的XML API,類似于jdom,用來讀寫XML檔案的。dom4j是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟體,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,對主流的Java XML API進行的性能、功能和易用性的評測,dom4j無論在那個方面都是非常出色的。我早在将近兩年之前就開始使用dom4j,直到現在。如今你可以看到越來越多的Java軟體都在使用dom4j來讀寫XML,特别值得一提的是連Sun的JAXM也在用dom4j。這是必須使用的jar包,Hibernate用它來讀寫配置檔案。

  • odmg.jar:

ODMG是一個ORM的規範,Hibernate實作了ODMG規範,這是一個核心的庫,必須使用的jar包。

  • commons-collections.jar:

Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大。必須使用的jar包。

  • commons-beanutils.jar:

Apache Commons包中的一個,包含了一些Bean工具類類。必須使用的jar包。

  • commons-lang.jar:

Apache Commons包中的一個,包含了一些資料類型工具類,是java.lang.*的擴充。必須使用的jar包。

  • commons-logging.jar:

Apache Commons包中的一個,包含了日志功能,必須使用的jar包。這個包本身包含了一個Simple Logger,但是功能很弱。在運作的時候它會先在CLASSPATH找log4j,如果有,就使用log4j,如果沒有,就找JDK1.4帶的java.util.logging,如果也找不到就用Simple Logger。commons-logging.jar的出現是一個曆史的的遺留的遺憾,當初Apache極力遊說Sun把log4j加入JDK1.4,然而JDK1.4項目小組已經接近釋出JDK1.4産品的時間了,是以拒絕了Apache的要求,使用自己的java.util.logging,這個包的功能比log4j差的很遠,性能也一般。後來Apache就開發出來了commons-logging.jar用來相容兩個logger。是以用commons-logging.jar寫的log程式,底層的Logger是可以切換的,你可以選擇log4j,java.util.logging或者它自帶的Simple Logger。不過我仍然強烈建議使用log4j,因為log4j性能很高,log輸出資訊時間幾乎等于System.out,而處理一條log平均隻需要5us。你可以在Hibernate的src目錄下找到Hibernate已經為你準備好了的log4j的配置檔案,你隻需要到Apache 網站去下載下傳log4j就可以了。commons-logging.jar也是必須的jar包。

使用Hibernate必須的jar包就是以上的這幾個,剩下的都是可選的。

  • ant.jar:

Ant編譯工具的jar包,用來編譯Hibernate源代碼的。如果你不準備修改和編譯Hibernate源代碼,那麼就沒有什麼用,可選的jar包

  • optional.jar:

Ant的一個輔助包。

  • c3p0.jar:

C3PO是一個資料庫連接配接池,Hibernate可以配置為使用C3PO連接配接池。如果你準備用這個連接配接池,就需要這個jar包。

  • proxool.jar:

也是一個連接配接池,同上。

  • commons-pool.jar, commons-dbcp.jar:

DBCP資料庫連接配接池,Apache的Jakarta組織開發的,Tomcat4的連接配接池也是DBCP。

實際上Hibernate自己也實作了一個非常非常簡單的資料庫連接配接池,加上上面3個,你實際上可以在Hibernate上選擇4種不同的資料庫連接配接池,選擇哪一個看個人的偏好,不過DBCP可能更通用一些。另外強調一點,如果在EJB中使用Hibernate,一定要用App Server的連接配接池,不要用以上4種連接配接池,否則容器管理事務不起作用。

  • connector.jar:

JCA 規範,如果你在App Server上把Hibernate配置為Connector的話,就需要這個jar。不過實際上一般App Server肯定會帶上這個包,是以實際上是多餘的包。

  • jaas.jar:

JAAS是用來進行權限驗證的,已經包含在JDK1.4裡面了。是以實際上是多餘的包。

  • jcs.jar:

如果你準備在Hibernate中使用JCS的話,那麼必須包括它,否則就不用。

  • jdbc2_0-stdext.jar:

JDBC2.0的擴充包,一般來說資料庫連接配接池會用上它。不過App Server都會帶上,是以也是多餘的。

  • jta.jar:

JTA規範,當Hibernate使用JTA的時候需要,不過App Server都會帶上,是以也是多餘的。

  • junit.jar:

Junit包,當你運作Hibernate自帶的測試代碼的時候需要,否則就不用。

  • xalan.jar, xerces.jar, xml-apis.jar:

Xerces是XML解析器,Xalan是格式化器,xml-apis實際上是JAXP。一般App Server都會帶上,JDK1.4也包含了解析器,不過不是Xerces,是Crimson,效率比較差,不過Hibernate用XML隻不過是讀取配置檔案,性能沒什麼緊要的,是以也是多餘的。