acerbic coffee
          走自己的路,讓別人跑步
          posts - 26,comments - 14,trackbacks - 0
          Hibernate包作用詳解

          Hibernate一共包括了23個(gè)jar包,令人眼花繚亂。本文將詳細(xì)講解Hibernate每個(gè)jar包的作用,便于你在應(yīng)用中根據(jù)自己的需要進(jìn)行取舍。

          下載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é)碼的動態(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上面可以找到一篇文章,對主流的Java XML API進(jìn)行的性能、功能和易用性的評測,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í)候它會先在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肯定會帶上這個(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ù)庫連接池會用上它。不過App Server都會帶上,所以也是多余的。

          jta.jar:

          JTA規(guī)范,當(dāng)Hibernate使用JTA的時(shí)候需要,不過App Server都會帶上,所以也是多余的。

          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都會帶上,JDK1.4也包含了解析器,不過不是Xerces,是Crimson,效率比較差,不過Hibernate用XML只不過是讀取配置文件,性能沒什么緊要的,所以也是多余的。

          struts2必備的包

          比如sturts-2.0.9下,必須最小運(yùn)行的要用這些包

          x-work-2.0.4.jar

          common-loggint-1.0.4.jar

          ognl-2.6.11.jar

          struts2-core-2.0.9.jar

          freemarker-2.3.8.jar

          struts2-spring-plugin-2.0.9.jar

          spring jar包詳細(xì)介紹

          spring.jar是包含有完整發(fā)布的單個(gè)jar包,spring.jar中包含除了spring-mock.jar里所包含的內(nèi)容外其它所有jar包的內(nèi)容,因?yàn)橹挥性陂_發(fā)環(huán)境下才會用到spring-mock.jar來進(jìn)行輔助測試,正式應(yīng)用系統(tǒng)中是用不得這些類的。

            除了spring.jar文件,Spring還包括有其它13個(gè)獨(dú)立的jar包,各自包含著對應(yīng)的Spring組件,用戶可以根據(jù)自己的需要來選擇組合自己的jar包,而不必引入整個(gè)spring.jar的所有類文件。

          (1)   spring-core.jar

            這個(gè)jar文件包含Spring框架基本的核心工具類,Spring其它組件要都要使用到這個(gè)包里的類,是其它組件的基本核心,當(dāng)然你也可以在自己的應(yīng)用系統(tǒng)中使用這些工具類。
           
          (2) spring-beans.jar

                  這個(gè)jar文件是所有應(yīng)用都要用到的,它包含訪問配置文件、創(chuàng)建和管理bean以及進(jìn)行Inversion of Control / Dependency Injection(IoC/DI)操作相關(guān)的所有類。如果應(yīng)用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。

          (3) spring-aop.jar

                  這個(gè)jar文件包含在應(yīng)用中使用Spring的AOP特性時(shí)所需的類。使用基于AOP的Spring特性,如聲明型事務(wù)管理(Declarative Transaction Management),也要在應(yīng)用里包含這個(gè)jar包。

          (4) spring-context.jar

          這個(gè)jar文件為Spring核心提供了大量擴(kuò)展。可以找到使用Spring ApplicationContext特性時(shí)所需的全部類,JDNI所需的全部類,UI方面的用來與模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的類,以及校驗(yàn)Validation方面的相關(guān)類。

          (5) spring-dao.jar

            這個(gè)jar文件包含Spring DAO、Spring Transaction進(jìn)行數(shù)據(jù)訪問的所有類。為了使用聲明型事務(wù)支持,還需在自己的應(yīng)用里包含spring-aop.jar。

          (6) spring-hibernate.jar

            這個(gè)jar文件包含Spring對Hibernate 2及Hibernate 3進(jìn)行封裝的所有類。

          (7) spring-jdbc.jar

            這個(gè)jar文件包含對Spring對JDBC數(shù)據(jù)訪問進(jìn)行封裝的所有類。

          (8) spring-orm.jar
           
          這個(gè)jar文件包含Spring對DAO特性集進(jìn)行了擴(kuò)展,使其支持 iBATIS、JDO、OJB、TopLink,因?yàn)镠ibernate已經(jīng)獨(dú)立成包了,現(xiàn)在不包含在這個(gè)包里了。這個(gè)jar文件里大部分的類都要依賴 spring-dao.jar里的類,用這個(gè)包時(shí)你需要同時(shí)包含spring-dao.jar包。

          (9) spring-remoting.jar

            這個(gè)jar文件包含支持EJB、JMS、遠(yuǎn)程調(diào)用Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的類。

          (10) spring-support.jar

            這個(gè)jar文件包含支持緩存Cache(ehcache)、JCA、JMX、郵件服務(wù)(Java Mail、COS Mail)、任務(wù)計(jì)劃Scheduling(Timer、Quartz)方面的類。

          (11) spring-web.jar

            這個(gè)jar文件包含Web應(yīng)用開發(fā)時(shí),用到Spring框架時(shí)所需的核心類,包括自動載入WebApplicationContext特性的類、Struts與JSF集成類、文件上傳的支持類、Filter類和大量工具輔助類。

          (12) spring-webmvc.jar

          這個(gè)jar文件包含Spring MVC框架相關(guān)的所有類。包含國際化、標(biāo)簽、Theme、視圖展現(xiàn)的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相關(guān)類。當(dāng)然,如果你的應(yīng)用使用了獨(dú)立的MVC框架,則無需這個(gè)JAR文件里的任何類。

          (13) spring-mock.jar
           
            這個(gè)jar文件包含Spring一整套mock類來輔助應(yīng)用的測試。Spring測試套件使用了其中大量mock類,這樣測試就更加簡單。模擬HttpServletRequest和HttpServletResponse類在Web應(yīng)用單元測試是很方便的。

          如何選擇這些發(fā)布包,決定選用哪些發(fā)布包其實(shí)相當(dāng)簡單。如果你正在構(gòu)建Web應(yīng)用并將全程使用Spring,那么最好就使用單個(gè)全部的 spring.jar文件;如果你的應(yīng)用僅僅用到簡單的Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需spring-core.jar與spring-beans.jar即可;如果你對發(fā)布的大小要求很高,那么就得精挑細(xì)選了,只取包含自己所需特性的jar文件了。采用獨(dú)立的發(fā)布包你可以避免包含自己的應(yīng)用不需要的全部類。當(dāng)然你可以采用其它的一些工具來設(shè)法令整個(gè)應(yīng)用包變小,節(jié)省空間的重點(diǎn)在于準(zhǔn)確地找出自己所需的Spring依賴類,然后合并所需的類與包就可以了。Eclispe有個(gè)插件叫 ClassPath Helper可以幫你找找所依賴的類。

          Spring包依賴說明:

          1)      spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各個(gè)的基本。

          2)      spring-beans.jar需spring-core.jar,cglib-nodep-2.1_3.jar

          3)      spring-aop.jar需spring-core.jar,spring-beans.jar,cglib-nodep-2.1_3.jar,aopalliance.jar

          4)      spring-context.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar

          5)      spring-dao.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-context.jar

          6)      spring-jdbc.jar需spring-core.jar,spring-beans.jar,spring-dao.jar

          7)      spring-web.jar需spring-core.jar,spring-beans.jar,spring-context.jar

          8)      spring-webmvc.jar需spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar

          9)      spring -hibernate.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-orm.jar,spring-web.jar,spring-webmvc.jar

          10) spring-orm.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-dao.jar,spring-jdbc.jar,spring-web.jar,spring-webmvc.jar

          11) spring -remoting.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-context.jar,spring-web.jar,spring-webmvc.jar

          12) spring-support.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar

          13) spring-mock.jar需spring-core.jar,spring-beans.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar

          來源:http://blog.csdn.net/Pointer_v/archive/2007/10/30/1857078.aspx

          http://www.cnblogs.com/jackyrong/archive/2008/10/26/1319963.html
          posted on 2009-06-29 16:54 acerbic coffee 閱讀(258) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 六安市| 精河县| 武安市| 穆棱市| 丽水市| 长阳| 华阴市| 庆云县| 辽中县| 沾益县| 乐都县| 怀宁县| 河源市| 望谟县| 南充市| 桑植县| 扬州市| 平湖市| 青浦区| 南投县| 红原县| 武宁县| 玛曲县| 龙川县| 沽源县| 府谷县| 安福县| 赫章县| 黄冈市| 奎屯市| 公安县| 贡嘎县| 上高县| 东兰县| 桦甸市| 登封市| 兴国县| 景德镇市| 营山县| 青神县| 黎平县|