【问题标题】:Spring & Hibernate EJB EventsSpring & Hibernate EJB 事件
【发布时间】:2008-11-03 11:03:58
【问题描述】:

是否可以定义一个 spring 管理的 EJB3 休眠监听器?

我的 persistence.xml 中有这个定义:

<properties> 
    <property name="hibernate.ejb.interceptor"
        value="my.class.HibernateAuditInterceptor" /> 
    <property name="hibernate.ejb.event.post-update"
        value="my.class.HibernateAuditTrailEventListener" /> 
</properties>

但我想用 spring 管理 HibernateAuditInterceptorHibernateAuditTrailEventListener,所以我可以在这些类中进行一些 bean 注入(例如:会话范围的 bean)。这可能吗?

【问题讨论】:

    标签: hibernate spring jpa events ejb


    【解决方案1】:
    【解决方案2】:

    问题在于这些属性只是字符串。即使您将 SessionFactory 定义为 Spring bean,您通过 hibernateProperties 设置器传递给它的任何属性也只是字符串:

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"ref="myDataSource"/>
        <property name="mappingResources">
            <list>
                <value>whatever.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.ejb.interceptor= my.class.HibernateAuditInterceptor
            </value>
            <value>
                hibernate.ejb.event.post-update=my.class.HibernateAuditTrailEventListener
            </value>
        </property>
    </bean>
    

    所以我认为你做不到。

    【讨论】:

    • Hibernate 的 SessionFactory 在打开会话时接受一个监听器。我确信这可以通过 spring 管理会话工厂和监听器来完成;我的问题是 JPA。
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2012-02-02
    • 1970-01-01
    • 2015-03-26
    • 2011-06-13
    • 2012-09-07
    • 2015-11-26
    • 2011-09-24
    相关资源
    最近更新 更多