可以使用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()了