可以使用Hibernate的Interceptor對數據稽核,它避免了使用Lifecycle對Hibernate 的依賴。減少了Hibernate的侵入性。
使用sessionFactory.openSession(interceptor)
使其與session相關聯。
但是常用的還是他的adaptor類EmptyInterceptor。我們只需要extends EmptyInterceptor,然后針對我們想要的方法進行override。
注意:Lifecycle和Interceptor都不能調用當前的session進行操作,因為他們接口中定義的方法都是由當前session負責調用的,如果在這些方法中又調用了當前session的話,就會導致管理混亂。解決方法有兩種:1。創建一個新的session。但是兩個不同的session獨占兩個數據庫連接,完成一個操作,對并發量大的系統來說是個奢侈。2。重用當前數據庫連接。使用session.connection()傳遞一個JDBC的Connection,然后tempSession=sessionFactory.openSession(connection),這樣雖然是兩個session,但是只有一個數據庫連接,由于是共享數據庫連接,那么tempSession就不需要進行close()了