Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 上下文会话的Hibernate侦听器?_Java_Hibernate - Fatal编程技术网

Java 上下文会话的Hibernate侦听器?

Java 上下文会话的Hibernate侦听器?,java,hibernate,Java,Hibernate,我正试图编写一个Hibernate拦截器用于审计目的,但它将用于线程本地上下文会话(而不是每次调用openSession()并将拦截器对象传递给它) 如有任何关于如何做到这一点的指南/示例代码,将不胜感激。(我的主要问题是找到一种方法,在侦听器对象第一次打开时将其提供给上下文会话)。为什么不使用hibernate的audit sulotion 为什么不使用hibernate的audit sulotion 如果只使用Hibernate,则可以使用两种方法为会话设置拦截器 //interceptor

我正试图编写一个Hibernate拦截器用于审计目的,但它将用于线程本地上下文会话(而不是每次调用openSession()并将拦截器对象传递给它)


如有任何关于如何做到这一点的指南/示例代码,将不胜感激。(我的主要问题是找到一种方法,在侦听器对象第一次打开时将其提供给上下文会话)。

为什么不使用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()
。是的,但是如何向它传递拦截器的实例?我需要在会话打开时执行此操作。是的,但是在这些情况下,将全局设置拦截器,并且相同的拦截器对象将用于许多会话,因此需要是线程安全的。那么,我如何仅对一些属于线程本地上下文会话的会话执行此操作,并为每个会话设置不同的拦截器对象?是的,但在这些情况下,拦截器将被全局设置,并且相同的拦截器对象将用于多个会话,因此需要是线程安全的。那么,我如何仅对一些属于线程本地上下文会话的会话执行此操作,并为每个会话设置不同的拦截器对象?