當前位置:首頁 » 硬碟大全 » cglib緩存
擴展閱讀
紹興存儲櫃價格 2022-10-04 07:35:20
webaerobics 2022-10-04 07:34:39
c語言怎麼做c的文件 2022-10-04 07:33:33

cglib緩存

發布時間: 2022-08-09 07:30:19

Ⅰ 應該怎麼確定ssh,ssm等框架整合需要的jar包

Hibernate Jar: hibernate3.jar,這個是hibernate3.0的核心jar包,必選,常用的Session,Query,Transaction都位於這個jar文件中。

cglib-2.1.3.jar,CGLIB庫,Hibernate用它來實現PO位元組碼的動態生成,非常核心的庫。

asm.jar ASM位元組碼庫 如果使用「cglib」

asm-attrs.jar ASM位元組碼庫 如果使用「cglib」

ehcache.jar EHCache緩存 如果沒有其它緩存

antlr.jar

ANother Tool for Language Recognition是一個工具。

jta.jar JTA規范,當Hibernate使用JTA的時候需要,不過App Server都會帶上,所以也是多餘的。但是為了測試方便建議還是帶上。

commons-logging.jar Apache Commons包中的一個,包含了日誌功能,必須使用的jar包。

commons-collections.jar Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大。

dom4j是一個Java的XML API,類似於jdom,用來讀寫XML文件的。Hibernate用它來讀寫配置文件。

Ⅱ hibernate框架的優缺點有哪些什麼時候才用二級緩存

Hibernate有什麼優勢? Hibernate 易於學習和使用。正如我在上面提到的,在您可以使用它之前,您只需要了解幾個簡單、自我描述的配置文件。 它 非常靈活。您可以在任何需要持久化服務的應用程序架構中使用 Hibernate。您可以通過 Servlet 和/或 Enterprise Java Bean 在 Standard Java 應用程序、Enterprise Java 應用程序中使用它。它也可以和 Spring 框架很好地集成。 它可以很好地向上擴展,因為它被設計為從底層一直到集群環境中工作。通過類似 Lazy Initialization 的技術以及通過 CGLIB 運行時間位元組代碼生成庫優化 Java 反射,最新版的 Hibernate 的性能也得到了加強。 Hibernate有什麼缺點? Hibernate 是另一個擁有自己的應用和維護周期的框架。 盡管有積極的社區支持,但是有時候缺乏專注於此產品的提供商也使得宣傳應用此框架顯得沒有說服力。 什麼時候才用二級緩存:如果應用中,檢索的頻率相當高,每次都要去檢索資料庫,代價可想而知。此時就可以設置Hibernate的二級緩存,減少系統開銷,提高應用的效率,減少客戶端檢索的響應時間。

Ⅲ spring3.1中的asm包跟哪個沖突

asm.jar ANother Tool for Language Recognition 必要 ASM位元組碼庫 如果使用「cglib」 則必要 asm-attrs.jar ehcache.jar cglib.jar ASM位元組碼庫 如果使用「cglib」 則必要 EHCache緩存 如果沒有其他的緩存,則是必要的 如果使用「cglib」 則必要 對be...

Ⅳ ssh的jar包怎麼搭配

Hibernate Jar: hibernate3.jar,這個是hibernate3.0的核心jar包,必選,常用的Session,Query,Transaction都位於這個jar文件中。

cglib-2.1.3.jar,CGLIB庫,Hibernate用它來實現PO位元組碼的動態生成,非常核心的庫。

asm.jar ASM位元組碼庫 如果使用「cglib」

asm-attrs.jar ASM位元組碼庫 如果使用「cglib」

ehcache.jar EHCache緩存 如果沒有其它緩存

antlr.jar

ANother Tool for Language Recognition是一個工具。

jta.jar JTA規范,當Hibernate使用JTA的時候需要,不過App Server都會帶上,所以也是多餘的。但是為了測試方便建議還是帶上。

Ⅳ hibernate清理緩存後緩存中還有數據嗎

臟檢查

Session到底是如何進行臟檢查的呢?當一個Customer對象被加入到Session緩存中時,Session會為Customer對象的值類型的屬性復制一份快照。當Session清理緩存時,會先進行臟檢查,即比較Customer對象的當前屬性與它的快照,來判斷Customer對象的屬性是否發生了變化,如果發生了變化,就稱這個對象是「臟對象」,Session會根據臟對象的最新屬性來執行相關的SQL語句,從而同步更新資料庫。

臟數據檢查:

什麼是臟數據?臟數據並不是廢棄和無用的數據,而是狀態前後發生變化的數據。我們看下面的代碼:

Transaction tx=session.beginTransaction();

User user=(User)session.load(User.class,」1」);//從資料庫中載入符合條件的數據

user.setName(「zz」);//改變了user對象的姓名屬性,此時user對象成為了所謂的「臟數據」

tx.commit();

當事務提交時,Hibernate會對session中的PO(持久化對象)進行檢測,判斷持久化對象的狀態是否發生了改變,如果發生了改變就會將改變更新到資料庫中。這里就存在一個問題,Hibernate如何來判斷一個實體對象的狀態前後是否發生了變化。也就是說Hibernate是如何檢查出一個數據已經變臟了。

通常臟數據的檢查有如下兩種辦法:

A、數據對象監控:

數據對象監控是通過攔截器對數據對象的setter方法進行監控來實現的,這類似於資料庫中的觸發器的概念,當某一個對象的屬性調用了setter方法而發生了改變,這時攔截器會捕獲這個動作,並且將改屬性標志為已經改變,在之後的資料庫操作時將其更新到資料庫中。這個方法的優點是提高了數據更新的同步性,但是這也是它的缺點,如果一個實體對象有很多屬性發生了改變,勢必造成大量攔截器回調方法的調用,這些攔截器都是通過Dynamic Proxy或者CGLIB實現的,在執行時都會付出一定的執行代價,所以有可能造成更新操作的較大延時。

B、數據版本比對:

這種方法是在持久化框架中保存數據對象的最近讀取版本,當提交數據時將提交的數據與這個保存的版本進行比對,如果發現發生了變化則將其同步跟新到資料庫中。這種方法降低了同步更新的實時性,但是當一個數據對象的很多屬性發生改變時,由於持久層框架緩存的存在,比對版本時可以充分利用緩存,這反而減少了更新數據的延遲。

在Hibernate中是採用數據版本比對的方法來進行臟數據檢查的,我們結合下面的代碼來講解Hibernate的具體實現策略。

Transaction tx=session.beginTransaction();

User user=(User)session.load(User.class,」1」);

user.setName(「zz」);

tx.commit();

當調用tx.commit();時好戲就此開場,commit()方法會調用session.flush()方法,在調用flush()方法時,會首先調用flushEverything()來進行一些預處理(如調用intercepter,完成級聯操作等),然後調用flushEntities()方法,這個方法是進行臟數據檢查的關鍵。

在繼續講解之前,我要先來介紹一個內部數據結構EntityEntry,EntityEntry是從屬於SessionImpl(Session介面的實現類)的內部類,每一個EntityEntry保存了最近一次與資料庫同步的實體原始狀態信息(如:實體的版本信息,實體的加鎖模式,實體的屬性信息等)。除了EntityEntry結構之外,還存在一個結構,這個結構稱為EntityEntries,它也是SessionImpl的內部類,而且是一個Map類型,它以」key-value」的形式保存了所有與當前session實例相關聯的實體對象和原始狀態信息,其中key是實體對象,value是EntityEntry。而flushEntities()的工作就是遍歷entityEntities,並將其中的實體對象與原始版本進行對比,判斷實體對象是否發生來了改變。flushEntities()首先會判斷實體的ID是否發生了改變,如果發生了改變則認為發生了異常,因為當前實體與EntityEntry的對應關系非法。如果沒有發生異常,而且經過版本比對判斷確實實體屬性發生了改變,則向當前的更新任務隊列中加入一個新的更新任務,此任務將在將在session.flush()方法中的execute()方法的調用中,轉化為相應的SQL語句交由資料庫去執行。最後Transaction將會調用當前session對應的JDBC Connection的commit()方法將當前事務提交。

臟數據檢查是發生在顯示保存實體對象時,所謂顯示保存是指在代碼中明確使用session調用save,update,saveOrupdate方法對實體對象進行保存,如:session.save(user);但是有時候由於級聯操作的存在,會產生一個問題,比如當保存一個user對象時,會根據user對象的狀態來對他所關聯的address對象進行保存,但是此時並沒有根據級聯對象的顯示保存語句。此時需要Hibernate能根據當前對象的狀態來判斷是否要將級聯對象保存到資料庫中。此時,Hibernate會根據unsaved-value進行判斷。Hibernate將首先取出目標對象的ID,然後將ID與unsaved-value值進行比較,如果相等,則認為實體對象尚未保存,進而馬上將進行保存,否則,則認為實體對象已經保存,而無須再次進行保存。比如,當向一個user對象新加入一個它所關聯的address對象後,當進行session.save(user)時,Hibernate會根據unsaved-value的值判斷出哪個address對象需要保存,對於新加入的address對象它的id尚未賦值,以此為null,與unsaved-value值相等,因此Hibernate會將其視為未保存對象,生成insert語句加以保存。如果想使用unsaved-value必須如下配置address對象的id屬性:

……

<id name=」id」 type=」java.lang.Integer」 unsaved-value=」null」>

<generator class=」increment」/>

</id>

……

緩存清理機制

當Session緩存中對象的屬性每次發生了變化,Session並不會立即清理緩存和執行相關的SQL update語句,而是在特定的時間點才清理緩存,這使得Session能夠把幾條相關的SQL語句合並為一條SQL語句,一遍減少訪問資料庫的次數,從而提高應用程序的數據訪問性能。

在默認情況下,Session會在以下時間點清理緩存。

  • 當應用程序調用org.hibernate.Transaction的commit()方法的時候.commit方法先清理緩存,然後再向資料庫提交事務。Hibernate之所以把清理緩存的時間點安排在事務快結束時,一方面是因為可以減少訪問資料庫的頻率,還有一方面是因為可以盡可能縮短當前事務對資料庫中相關資源的鎖定時間。

  • 當應用程序執行一些查詢操作時,如果緩存中持久化對象的屬性已經發生了變化,就會清理緩存,使得Session緩存與資料庫已經進行了同步,從而保證查詢結果返回的是正確的數據。

  • 當應用程序顯示調用Session的flush()方法的時候。

  • Session進行清理緩存的例外情況是,如果對象使用native生成器來生成OID,那麼當調用Session的save()方法保存該對象時,會立即執行向資料庫插入該實體的insert語句。

Ⅵ hibernate核心包有哪些

hibernate核心包:hibernate-distribution-3.5.1-Final(8個)

cglib-2.2.jar
hibernate\lib\bytecode\cglib\cglib-2.2.jar
cglib庫,hibernate用它來實現PO位元組碼的動態生成,非常核心的庫,必須使用的jar包

antlr-2.7.6.jar
Antlr(ANother Tool for Language Recognition)是一個工具,它為我們構造自己的識別器(recognizers)、編譯器(compiler)和轉換器(translators)提供了一個基礎。通過定義自己的語言規則,Antlr可以為我們生成相應的語言解析器,這樣便可以省卻了自己全手工打造的勞苦。

commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.5.8.jar
hibernate\lib\required\*

---------------------------------------------------------------

hibernate註解包:hibernate-annotations-3.4.0.GA(3個)

hibernate-annotations.jar
ejb3-persistence.jar
hibernate-commons-annotations.jar

---------------------------------------------------------------

hibernate針對JPA的實現包:hibernate-entitymanager-3.4.0.GA(3個)

hibernate-entitymanager.jar
log4j.jar
slf4j-log4j12.jar
hibernate 所需jar包及簡介
Hibernate3.jar 這個是hibernate最主要的jar包

ant-1.63.jar Ant 的核心包,在構建Hibernate 時會用到

antlr-2.7.5H3.jar 語言轉換工,Hibernate利用它實現 HQL 到 SQL的轉換

asm.jar/asm-attrs.jar ASM 位元組轉換庫

c3p0-0.8.5.2.jar C3PO JDBC 連接池工具

cglib-2.1.jar 高效的代碼生成工具, Hibernate用它在運行時擴展 Java類和實現 Java 介面

commons-collections-2.1.1.jar Apache 的工具集,用來增強Java對集合的處理能力

commons-logging-1.0.4.jar Apache 軟體基我組所提供的日誌工具

concurrent-1.3.2.jar 線程同步工具,在使用JBoss 的樹狀緩存時需要用到

connector.jar 用連接多個應用伺服器的標准連接器

dom4j-1.6.jar dom4j XML 解析器

ehcache-1.1.jar 緩存工具.在沒有提供其他緩存工具時,這個緩存工具是必不可少的

jaas.jar 標準的 Java 許可權和認證服務包

jaxen-1.1-beta-4.jar 通用的 XPath 處理引擎

jboss-cache.jar JBoss 的一種樹狀緩存實現工具

jboss-common.jar Jboss 的基礎包,在使用 JBoss 的樹狀緩存時必須有此包

jboss-jmx.jar JBoss 的 JMX 實現包

jboss-system.jar JBoss 的核心,包括伺服器和部署引擎

jdbc2_0-stdext.jar 標準的 JDBC 2.0 擴展API

jgroups2.2.7.jar 網路通信工具包

jta.jar 標準的 JAVA 事務處理介面

junit-3.8.1.jar JUnit 測試框架

log4.j-1.2.9.jar log4j 庫,Apache 的日誌工具

oscache-2.1.jar Java 對象的緩存工具

proxool-0.8.3.jar Proxool JDBC 連接池 工具

swarmcache-1.0rc2.jar Hibernate 可以使用的一種緩存工具

versioncheck.jar 版本檢查工具包,用於在構建 Hibernate 的時候檢查輔助 jar 包文件的版本

xerces-2.6.2.jar SAX XML 解析器

xml-apis.jar Java語言中標準的XML 解析器

Ⅶ 異常:ERROR [org.hibernate.proxy.BasicLazyInitializer] - CGLIB Enhancement failed...

之前遇到過類似問題.需要升級cglib-2.1.jar到2.2

用這個版本的你在試試
http://sourceforge.net/project/showfiles.php?group_id=56933&package_id=98218&release_id=419752

再有就是把HIBERNATE需要的相關jar包10個
COPY到工程的LIB目錄下
(如果你在JAVA構建路徑,通過添加外部JAR包,添加了那幾個必須的包,在此還要把他們COPY到工 程的LIB目錄下!)

Ⅷ hibernate導jar包

最小必要包為antlr.jar,cglib.jar,asm.jar, asm-attrs.jar, commons-collections.jar, commons-loggins.jar ,encache.jar, dom4j.jar,log4j.jar,jta.jar

Hibernate3.2 核心包作用
包 作用 說明
jta.jar 標準的JTA API 必要
commons-logging.jar 日誌功能 必要
commons-collections.jar 集合類 必要
antlr.jar ANother Tool for Language Recognition(antlr) 必要
dom4j.jar XML配置和映射解釋器 必要
Hibernate3.jar 核心庫 必要
asm.jar ASM位元組碼庫 如果使用「cglib」則必要
asm-attrs.jar ASM位元組碼庫 如果使用「cglib」則必要
ehcache.jar EHCache緩存 如果沒有其它的緩存,則它是必要的
cglib.jar CGLIB 位元組碼解釋器 如果使用「cglib」則必要
以下包可選
versioncheck.jar 版本檢查
swarmcache.jar
jboss-cache.jar TreeCache
jgroups.jar
xml-apis.jar JAXP API
c3p0-0.9.1.jar C3PO JDBC鏈接池
connector.jar JCA API
jboss-system.jar 使用TreeCache時必要
jacc-1_0-fr.jar JACC 庫
checkstyle-all.jar
junit.jar
javassist.jar Javassist 位元組碼解釋器
ant-lanuncher.jar
jaas.jar JAAS API
jdbc2_0-stdext.jar JDBC擴展API
ant-antlr.jar Ant antlr支持
jboss-jmx.jar
cleanimports.jar cleanimports
xerces.jar SAX parser JDK版本低於1.4時必要
jaxen-1.1-beta-7.jar Jaxen 如果想提高啟動性能則去使用
ant-junit.jar Ant junit support
ant-swing.jar ant swing support
ant.jar
proxool.jar Proxool JDBC連接池
concurrent.jar 使用TreeCache需要
syndiag2.jar

Ⅸ hibernate工作原理及為什麼要用

hibernate 簡介:
hibernate是一個開源框架,它是對象關聯關系映射的框架,它對JDBC做了輕量級的封裝,而我們java程序員可以使用面向對象的思想來操縱資料庫。
hibernate核心介面
session:負責被持久化對象CRUD操作
sessionFactory:負責初始化hibernate,創建session對象
configuration:負責配置並啟動hibernate,創建SessionFactory
Transaction:負責事物相關的操作
Query和Criteria介面:負責執行各種資料庫查詢

hibernate工作原理:
1.通過Configuration config = new Configuration().configure();//讀取並解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>讀取並解析映射信息
3.通過SessionFactory sf = config.buildSessionFactory();//創建SessionFactory
4.Session session = sf.openSession();//打開Sesssion
5.Transaction tx = session.beginTransaction();//創建並啟動事務Transation
6.persistent operate操作數據,持久化操作
7.tx.commit();//提交事務
8.關閉Session
9.關閉SesstionFactory

為什麼要用hibernate:
1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。
2. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
3. hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。
4. hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。

Hibernate是如何延遲載入?get與load的區別
1. 對於Hibernate get方法,Hibernate會確認一下該id對應的數據是否存在,首先在session緩存中查找,然後在二級緩存中查找,還沒有就查詢資料庫,數據 庫中沒有就返回null。這個相對比較簡單,也沒有太大的爭議。主要要說明的一點就是在這個版本(bibernate3.2以上)中get方法也會查找二級緩存!
2. Hibernate load方法載入實體對象的時候,根據映射文件上類級別的lazy屬性的配置(默認為true),分情況討論:
(1)若為true,則首先在Session緩存中查找,看看該id對應的對象是否存在,不存在則使用延遲載入,返回實體的代理類對象(該代理類為實體類的子類,由CGLIB動態生成)。等到具體使用該對象(除獲取OID以外)的時候,再查詢二級緩存和資料庫,若仍沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。
(2)若為false,就跟Hibernateget方法查找順序一樣,只是最終若沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。
這里get和load有兩個重要區別:
如果未能發現符合條件的記錄,Hibernate get方法返回null,而load方法會拋出一個ObjectNotFoundException。
load方法可返回沒有載入實體數據的代 理類實例,而get方法永遠返回有實體數據的對象。
(對於load和get方法返回類型:好多書中都說:「get方法永遠只返回實體類」,實際上並不正 確,get方法如果在session緩存中找到了該id對應的對象,如果剛好該對象前面是被代理過的,如被load方法使用過,或者被其他關聯對象延遲加 載過,那麼返回的還是原先的代理對象,而不是實體類對象,如果該代理對象還沒有載入實體數據(就是id以外的其他屬性數據),那麼它會查詢二級緩存或者數 據庫來載入數據,但是返回的還是代理對象,只不過已經載入了實體數據。)
總之對於get和load的根本區別,一句話,hibernate對於 load方法認為該數據在資料庫中一定存在,可以放心的使用代理來延遲載入,如果在使用過程中發現了問題,只能拋異常;而對於get方 法,hibernate一定要獲取到真實的數據,否則返回null。

Hibernate中怎樣實現類之間的關系?(如:一對多、多對多的關系)
類與類之間的關系主要體現在表與表之間的關系進行操作,它們都市對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、

說下Hibernate的緩存機制:
Hibernate緩存的作用:
Hibernate是一個持久層框架,經常訪問物理資料庫,為了降低應用程序對物理數據源訪問的頻次,從而提高應用程序的運行性能。緩存內的數據是對物理數據源中的數據的復制,應用程序在運行時從緩存讀寫數據,在特定的時刻或事件會同步緩存和物理數據源的數據
Hibernate緩存分類:
Hibernate緩存包括兩大類:Hibernate一級緩存和Hibernate二級緩存
Hibernate一級緩存又稱為「Session的緩存」,它是內置的,意思就是說,只要你使用hibernate就必須使用session緩存。由於Session對象的生命周期通常對應一個資料庫事務或者一個應用事務,因此它的緩存是事務范圍的緩存。在第一級緩存中,持久化類的每個實例都具有唯一的OID。
Hibernate二級緩存又稱為「SessionFactory的緩存」,由於SessionFactory對象的生命周期和應用程序的整個過程對應,因此Hibernate二級緩存是進程范圍或者集群范圍的緩存,有可能出現並發問題,因此需要採用適當的並發訪問策略,該策略為被緩存的數據提供了事務隔離級別。第二級緩存是可選的,是一個可配置的插件,在默認情況下,SessionFactory不會啟用這個插件。

什麼樣的數據適合存放到第二級緩存中?
1 很少被修改的數據
2 不是很重要的數據,允許出現偶爾並發的數據
3 不會被並發訪問的數據
4 常量數據
不適合存放到第二級緩存的數據?
1經常被修改的數據
2 .絕對不允許出現並發訪問的數據,如財務數據,絕對不允許出現並發
3 與其他應用共享的數據。

Hibernate查找對象如何應用緩存?
當Hibernate根據ID訪問數據對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那麼從二級緩存中查;如果都查不到,再查詢資料庫,把結果按照ID放入到緩存
刪除、更新、增加數據的時候,同時更新緩存

Hibernate管理緩存實例
無論何時,我們在管理Hibernate緩存(Managing the caches)時,當你給save()、update()或saveOrUpdate()方法傳遞一個對象時,或使用load()、 get()、list()、iterate() 或scroll()方法獲得一個對象時, 該對象都將被加入到Session的內部緩存中。
當隨後flush()方法被調用時,對象的狀態會和資料庫取得同步。 如果你不希望此同步操作發生,或者你正處理大量對象、需要對有效管理內存時,你可以調用evict() 方法,從一級緩存中去掉這些對象及其集合。

Hibernate的查詢方式
Sql、Criteria,object comptosition
Hql:
1、 屬性查詢
2、 參數查詢、命名參數查詢
3、 關聯查詢
4、 分頁查詢
5、 統計函數

如何優化Hibernate?
1.使用雙向一對多關聯,不使用單向一對多
2.靈活使用單向一對多關聯
3.不用一對一,用多對一取代
4.配置對象緩存,不使用集合緩存
5.一對多集合使用Bag,多對多集合使用Set
6. 繼承類使用顯式多態
7. 表欄位要少,表關聯不要怕多,有二級緩存撐腰

hibernate的開發步驟:
開發步驟
1)搭建好環境
引入hibernate最小的jar包
准備Hibernate.cfg.xml啟動配置文件
2)寫實體類(pojo)
3)為實體類寫映射文件"User.hbm.xml"
在hibernate.cfg.xml添加映射的實體
4)創建庫表
5)寫測試類
獲得Configuration
創建SessionFactory
打開Session
開啟事務
使用session操作數據
提交事務
關閉資源

Ⅹ 初學hibernate配JAR包很痛苦!

到官方網站:http://www.hibernate.org/6.html 下載(當前版本:Hibernate Core 3.2.3GA )hibernate包。解開壓縮包。在lib目錄下找到以下hibernate應用所必須的包(可以查看該目錄下的_README.txt文件來確定哪些包是必需的):
1. hibernate.jar :hibernate核心包。必需的。
2. antlr.jar :Hibernate使用ANTLR來產生查詢分析器,這個類庫在運行環境下時也是必需的。
3. cglib.jar :CGLIB庫,Hibernate用它來實現PO位元組碼的動態生成,非常核心的庫,必需的jar包。
4. asm.jar :ASM位元組碼庫,cglib.jar包依賴的包。必需的jar包。
5. asm-attrs.jar :ASM位元組碼庫,cglib.jar包依賴的包。必需的jar包。
6. commons-collections.jar :Apache Commons包中的一個,包含了一些Apache開發的集合類,功能比java.util.*強大。必須使用的jar包。
7. commons-logging.jar :Apache Commons包中的一個,包含了日誌功能,必須使用的jar包。這個包本身包含了一個Simple Logger,但是功能很弱。在運行的時候它會先在CLASSPATH找log4j,如果有,就使用log4j,如果沒有,就找JDK1.4帶的java.util.logging,如果也找不到就用Simple Logger。必需的。
8. ehcache.jar :Hibernate可以使用不同cache緩存工具作為二級緩存。EHCache是預設的cache緩存工具。如果沒有其它的可選緩存工具,則為必需的。
9. jta.jar :JTA規范,當Hibernate使用JTA的時候需要。必需的。
10. dom4j.jar :dom4j是一個Java的XML API,類似於jdom,用來讀寫XML文件的。Hibernate使用dom4j解析XML配置文件和XML映射元文件。必需的。
11. log4j.jar :日誌包,可選的。
把以上必需的jar放置到應用程序的類路徑中(web應用的WEB-INF/lib目錄下)。
話說你問了2次!