Hibernate中各個(gè)包的作用簡介
2024-07-21 02:14:54
供稿:網(wǎng)友
 
  下載hibernate,例如2.0.3穩(wěn)定版本,解壓縮,可以看到一個(gè)hibernate2.jar和lib目錄下有22個(gè)jar包: 
  hibernate2.jar: 
  hibernate的庫,沒有什么可說的,必須使用的jar包 
  cglib-asm.jar: 
  cglib庫,hibernate用它來實(shí)現(xiàn)po字節(jié)碼的動(dòng)態(tài)生成,非常核心的庫,必須使用的jar包 
  dom4j.jar: 
  dom4j是一個(gè)java的xml api,類似于jdom,用來讀寫xml文件的。dom4j是一個(gè)非常非常優(yōu)秀的java xml api,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開放源代碼的軟件,可以在sourceforge上找到它。在ibm developerworks上面可以找到一篇文章,對(duì)主流的java xml api進(jìn)行的性能、功能和易用性的評(píng)測,dom4j無論在那個(gè)方面都是非常出色的。我早在將近兩年之前就開始使用dom4j,直到現(xiàn)在。如今你可以看到越來越多的java軟件都在使用dom4j來讀寫xml,特別值得一提的是連sun的jaxm也在用dom4j。這是必須使用的jar包,hibernate用它來讀寫配置文件。 
  odmg.jar: 
  odmg是一個(gè)orm的規(guī)范,hibernate實(shí)現(xiàn)了odmg規(guī)范,這是一個(gè)核心的庫,必須使用的jar包。 
  commons-collections.jar: 
  apache commons包中的一個(gè),包含了一些apache開發(fā)的集合類,功能比java.util.*強(qiáng)大。必須使用的jar包。 
  commons-beanutils.jar: 
  apache commons包中的一個(gè),包含了一些bean工具類類。必須使用的jar包。 
  commons-lang.jar: 
  apache commons包中的一個(gè),包含了一些數(shù)據(jù)類型工具類,是java.lang.*的擴(kuò)展。必須使用的jar包。 
  commons-logging.jar: 
  apache commons包中的一個(gè),包含了日志功能,必須使用的jar包。這個(gè)包本身包含了一個(gè)simple logger,但是功能很弱。在運(yùn)行的時(shí)候它會(huì)先在classpath找log4j,如果有,就使用log4j,如果沒有,就找jdk1.4帶的java.util.logging,如果也找不到就用simple logger。commons-logging.jar的出現(xiàn)是一個(gè)歷史的的遺留的遺憾,當(dāng)初apache極力游說sun把log4j加入jdk1.4,然而jdk1.4項(xiàng)目小組已經(jīng)接近發(fā)布jdk1.4產(chǎn)品的時(shí)間了,因此拒絕了apache的要求,使用自己的java.util.logging,這個(gè)包的功能比log4j差的很遠(yuǎn),性能也一般。
  后來apache就開發(fā)出來了commons-logging.jar用來兼容兩個(gè)logger。因此用commons-logging.jar寫的log程序,底層的logger是可以切換的,你可以選擇log4j,java.util.logging或者它自帶的simple logger。不過我仍然強(qiáng)烈建議使用log4j,因?yàn)閘og4j性能很高,log輸出信息時(shí)間幾乎等于system.out,而處理一條log平均只需要5us。你可以在hibernate的src目錄下找到hibernate已經(jīng)為你準(zhǔn)備好了的log4j的配置文件,你只需要到apache 網(wǎng)站去下載log4j就可以了。commons-logging.jar也是必須的jar包。 
  使用hibernate必須的jar包就是以上的這幾個(gè),剩下的都是可選的。 
  ant.jar: 
  ant編譯工具的jar包,用來編譯hibernate源代碼的。如果你不準(zhǔn)備修改和編譯hibernate源代碼,那么就沒有什么用,可選的jar包 
  optional.jar: 
  ant的一個(gè)輔助包。 
  c3p0.jar: 
  c3po是一個(gè)數(shù)據(jù)庫連接池,hibernate可以配置為使用c3po連接池。如果你準(zhǔn)備用這個(gè)連接池,就需要這個(gè)jar包。 
  proxool.jar: 
  也是一個(gè)連接池,同上。 
  commons-pool.jar, commons-dbcp.jar: 
  dbcp數(shù)據(jù)庫連接池,apache的jakarta組織開發(fā)的,tomcat4的連接池也是dbcp。 
  實(shí)際上hibernate自己也實(shí)現(xiàn)了一個(gè)非常非常簡單的數(shù)據(jù)庫連接池,加上上面3個(gè),你實(shí)際上可以在hibernate上選擇4種不同的數(shù)據(jù)庫連接池,選擇哪一個(gè)看個(gè)人的偏好,不過dbcp可能更通用一些。另外強(qiáng)調(diào)一點(diǎn),如果在ejb中使用hibernate,一定要用app server的連接池,不要用以上4種連接池,否則容器管理事務(wù)不起作用。 
  connector.jar: 
  jca 規(guī)范,如果你在app server上把hibernate配置為connector的話,就需要這個(gè)jar。不過實(shí)際上一般app server肯定會(huì)帶上這個(gè)包,所以實(shí)際上是多余的包。 
  jaas.jar: 
  jaas是用來進(jìn)行權(quán)限驗(yàn)證的,已經(jīng)包含在jdk1.4里面了。所以實(shí)際上是多余的包。 
  jcs.jar: 
  如果你準(zhǔn)備在hibernate中使用jcs的話,那么必須包括它,否則就不用。 
  jdbc2_0-stdext.jar: 
  jdbc2.0的擴(kuò)展包,一般來說數(shù)據(jù)庫連接池會(huì)用上它。不過app server都會(huì)帶上,所以也是多余的。 
  jta.jar: 
  jta規(guī)范,當(dāng)hibernate使用jta的時(shí)候需要,不過app server都會(huì)帶上,所以也是多余的。 
  junit.jar: 
  junit包,當(dāng)你運(yùn)行hibernate自帶的測試代碼的時(shí)候需要,否則就不用。 
  xalan.jar, xerces.jar, xml-apis.jar: 
  xerces是xml解析器,xalan是格式化器,xml-apis實(shí)際上是jaxp。一般app server都會(huì)帶上,jdk1.4也包含了解析器,不過不是xerces,是crimson,效率比較差,不過hibernate用xml只不過是讀取配置文件,性能沒什么緊要的,所以也是多余的。本文來源于網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)社區(qū)http://www.html.org.cn收集整理,歡迎訪問。