Hibernate中有關(guān)Interceptor的學(xué)習(xí)
可以使用Hibernate的Interceptor對(duì)數(shù)據(jù)稽核,它避免了使用Lifecycle對(duì)Hibernate 的依賴。減少了Hibernate的侵入性。使用sessionFactory.openSession(interceptor)
使其與session相關(guān)聯(lián)。
但是常用的還是他的adaptor類EmptyInterceptor。我們只需要extends EmptyInterceptor,然后針對(duì)我們想要的方法進(jìn)行override。
注意:Lifecycle和Interceptor都不能調(diào)用當(dāng)前的session進(jìn)行操作,因?yàn)樗麄兘涌谥卸x的方法都是由當(dāng)前session負(fù)責(zé)調(diào)用的,如果在這些方法中又調(diào)用了當(dāng)前session的話,就會(huì)導(dǎo)致管理混亂。解決方法有兩種:1。創(chuàng)建一個(gè)新的session。但是兩個(gè)不同的session獨(dú)占兩個(gè)數(shù)據(jù)庫連接,完成一個(gè)操作,對(duì)并發(fā)量大的系統(tǒng)來說是個(gè)奢侈。2。重用當(dāng)前數(shù)據(jù)庫連接。使用session.connection()傳遞一個(gè)JDBC的Connection,然后tempSession=sessionFactory.openSession(connection),這樣雖然是兩個(gè)session,但是只有一個(gè)數(shù)據(jù)庫連接,由于是共享數(shù)據(jù)庫連接,那么tempSession就不需要進(jìn)行close()了
posted on 2007-09-16 10:22 劉錚 閱讀(617) 評(píng)論(0) 編輯 收藏 所屬分類: Hibernate