這些天仔細(xì)看了一下Hibernate2里面用的包。我用的是Hibernate 2.1
以下一些內(nèi)容摘自網(wǎng)上其它朋友發(fā)的,并對(duì)一些不明白的地方進(jìn)行注釋:
hibernate2.jar:
Hibernate的庫(kù),必須使用的jar包
cglib-full-2.0.2.jar
CGLIB庫(kù),Hibernate用它來(lái)實(shí)現(xiàn)PO字節(jié)碼的動(dòng)態(tài)生成,非常核心的庫(kù),必須使用的jar包
dom4j-1.4.jar
dom4j是一個(gè)Java的XML API,類似于jdom,用來(lái)讀寫(xiě)XML文件的。dom4j是一個(gè)非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開(kāi)放源代碼的軟件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,對(duì)主流的Java XML API進(jìn)行的性能、功能和易用性的評(píng)測(cè),dom4j無(wú)論在那個(gè)方面都是非常出色的。我早在將近兩年之前就開(kāi)始使用dom4j,直到現(xiàn)在。如今你可以看到越來(lái)越多的Java軟件都在使用dom4j來(lái)讀寫(xiě)XML,特別值得一提的是連Sun的JAXM也在用dom4j。這是必須使用的jar包,Hibernate用它來(lái)讀寫(xiě)配置文件。
odmg-3.0.jar
ODMG是一個(gè)ORM的規(guī)范,Hibernate實(shí)現(xiàn)了ODMG規(guī)范,這是一個(gè)核心的庫(kù),必須使用的jar包。
commons-collections-2.1.1.jar:
Apache Commons包中的一個(gè),包含了一些Apache開(kāi)發(fā)的集合類,功能比java.util.*強(qiáng)大。必須使用的jar包。
commons-beanutils.jar:
Apache Commons包中的一個(gè),包含了一些Bean工具類類。必須使用的jar包。
*注:我沒(méi)有在Hibernate的lib中看到這個(gè)包,不過(guò)在Struts中看到這個(gè)包,在網(wǎng)上查了一下,這個(gè)包提供了易用的java反射。我沒(méi)有用這個(gè)包,也沒(méi)有出問(wèn)題(從這里看到的:http://www.aygfsteel.com/kobe09/archive/2006/06/14/52745.aspx )
commons-lang-1.0.1.jar
Apache Commons包中的一個(gè),包含了一些數(shù)據(jù)類型工具類,是java.lang.*的擴(kuò)展。必須使用的jar包。
commons-logging-1.0.4.jar
Apache Commons包中的一個(gè),包含了日志功能,必須使用的jar包。
從網(wǎng)上查到的,以上為必需的包
anant-1.5.3.jar
Ant編譯工具的jar包,用來(lái)編譯Hibernate源代碼的。如果你不準(zhǔn)備修改和編譯Hibernate源代碼,那么就沒(méi)有什么用,可選的jar包
ant-optional-1.5.3.jar
Ant的一個(gè)輔助包。
c3p0-0.8.4.5.jar
C3PO是一個(gè)數(shù)據(jù)庫(kù)連接池,Hibernate可以配置為使用C3PO連接池。如果你準(zhǔn)備用這個(gè)連接池,就需要這個(gè)jar包。
proxool-0.8.3.jar
也是一個(gè)連接池,同上。
commons-pool-1.2.jar, commons-dbcp-1.2.1.jar
DBCP數(shù)據(jù)庫(kù)連接池,Apache的Jakarta組織開(kāi)發(fā)的,Tomcat4的連接池也是DBCP。
實(shí)際上Hibernate自己也實(shí)現(xiàn)了一個(gè)非常非常簡(jiǎn)單的數(shù)據(jù)庫(kù)連接池,加上上面3個(gè),你實(shí)際上可以在Hibernate上選擇4種不同的數(shù)據(jù)庫(kù)連接池,選擇哪一個(gè)看個(gè)人的偏好,不過(guò)DBCP可能更通用一些。另外強(qiáng)調(diào)一點(diǎn),如果在EJB中使用Hibernate,一定要用App Server的連接池,不要用以上4種連接池,否則容器管理事務(wù)不起作用。
connector.jar:
JCA 規(guī)范,如果你在App Server上把Hibernate配置為Connector的話,就需要這個(gè)jar。不過(guò)實(shí)際上一般App Server肯定會(huì)帶上這個(gè)包,所以實(shí)際上是多余的包。
jaas.jar
JAAS是用來(lái)進(jìn)行權(quán)限驗(yàn)證的,已經(jīng)包含在JDK1.4里面了。所以實(shí)際上是多余的包。
jcs-1.0-dev.jar
如果你準(zhǔn)備在Hibernate中使用JCS的話,那么必須包括它,否則就不用。
jdbc2_0-stdext.jar:
JDBC2.0的擴(kuò)展包,一般來(lái)說(shuō)數(shù)據(jù)庫(kù)連接池會(huì)用上它。不過(guò)App Server都會(huì)帶上,所以也是多余的。
jta.jar:
JTA規(guī)范,當(dāng)Hibernate使用JTA的時(shí)候需要,不過(guò)App Server都會(huì)帶上,所以也是多余的。
junit-3.8.1.jar
Junit包,當(dāng)你運(yùn)行Hibernate自帶的測(cè)試代碼的時(shí)候需要,否則就不用。
xalan-2.4.0.jar, xerces-2.4.0.jar, xml-apis.jar:
Xerces是XML解析器,Xalan是格式化器,xml-apis實(shí)際上是JAXP。一般App Server都會(huì)帶上,JDK1.4也包含了解析器,不過(guò)不是Xerces,是Crimson,效率比較差,不過(guò)Hibernate用XML只不過(guò)是讀取配置文件,性能沒(méi)什么緊要的,所以也是多余的。
我在項(xiàng)目中導(dǎo)入了以下的包:(這些是上面所說(shuō)的必導(dǎo)的包)
可是我出現(xiàn)了以下錯(cuò)誤:
接下來(lái)我導(dǎo)入了以下的包,我的hibernate才能正常運(yùn)行
java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException ehcache-1.1.jar 這個(gè)包沒(méi)有導(dǎo)入
java.lang.NoClassDefFoundError: javax/transaction/Synchronization 把jta.jar包加進(jìn)來(lái)