Java 上下文会话的Hibernate侦听器?
我正试图编写一个Hibernate拦截器用于审计目的,但它将用于线程本地上下文会话(而不是每次调用openSession()并将拦截器对象传递给它)Java 上下文会话的Hibernate侦听器?,java,hibernate,Java,Hibernate,我正试图编写一个Hibernate拦截器用于审计目的,但它将用于线程本地上下文会话(而不是每次调用openSession()并将拦截器对象传递给它) 如有任何关于如何做到这一点的指南/示例代码,将不胜感激。(我的主要问题是找到一种方法,在侦听器对象第一次打开时将其提供给上下文会话)。为什么不使用hibernate的audit sulotion 为什么不使用hibernate的audit sulotion 如果只使用Hibernate,则可以使用两种方法为会话设置拦截器 //interceptor
如有任何关于如何做到这一点的指南/示例代码,将不胜感激。(我的主要问题是找到一种方法,在侦听器对象第一次打开时将其提供给上下文会话)。为什么不使用hibernate的audit sulotion 为什么不使用hibernate的audit sulotion 如果只使用Hibernate,则可以使用两种方法为会话设置拦截器
//interceptor for global, set interceptor when create sessionFactory with Configure
sessionFactory =
new AnnotationConfiguration().configure()
.setInterceptor(new AuditTrailInterceptor())
.buildSessionFactory()
//interceptor for per Session
Session session = sessionFactory.openSession(new XxxInterceptor())
如果使用Spring创建SessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="entityInterceptor">
<bean class="your.XxxInterceptor"/>
</property>
<!-- other configuration -->
</bean>
我发现了一篇对你有帮助的博客文章 如果只使用Hibernate,则可以使用两种方法为会话设置拦截器
//interceptor for global, set interceptor when create sessionFactory with Configure
sessionFactory =
new AnnotationConfiguration().configure()
.setInterceptor(new AuditTrailInterceptor())
.buildSessionFactory()
//interceptor for per Session
Session session = sessionFactory.openSession(new XxxInterceptor())
如果使用Spring创建SessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="entityInterceptor">
<bean class="your.XxxInterceptor"/>
</property>
<!-- other configuration -->
</bean>
我发现了一篇对你有帮助的博客文章 Thx的链接,我可以使用它。但是我很想知道是否可以为线程本地上下文会话编写拦截器。您可以使用绑定到当前线程的
sessionFactory.getCurrentSession()
。是的,但是如何向它传递拦截器的实例?我需要这样做时,会话打开。Thx的链接,我可以使用它。但是我很想知道是否可以为线程本地上下文会话编写拦截器。您可以使用绑定到当前线程的sessionFactory.getCurrentSession()
。是的,但是如何向它传递拦截器的实例?我需要在会话打开时执行此操作。是的,但是在这些情况下,将全局设置拦截器,并且相同的拦截器对象将用于许多会话,因此需要是线程安全的。那么,我如何仅对一些属于线程本地上下文会话的会话执行此操作,并为每个会话设置不同的拦截器对象?是的,但在这些情况下,拦截器将被全局设置,并且相同的拦截器对象将用于多个会话,因此需要是线程安全的。那么,我如何仅对一些属于线程本地上下文会话的会话执行此操作,并为每个会话设置不同的拦截器对象?