0

我正在研究 GWT 2.5.1 + Spring 3.2 + Hibernate 4 项目。Spring-Hibernate 应用程序已经在工作并且具有通常的 Service/Dao 层。事务由 Spring 通过服务方法上的 @Transactional 注释处理。

我正在尝试使用 GWT RequestFactory 在其上添加 GWT 层。特别是,我不明白 RequestFactory 和 Spring 管理的事务应该如何一起工作。

看起来 RequestFactory 在实际调用请求的服务方法之前和之后执行了很多查询(参见 Locator 类的 find/getId 方法)。顺便说一句:Locator 是否应该依赖 Spring 服务 bean 来执行这些查询?大概吧。

这意味着 RequestFactory 在不同的事务中做事,这是不好的。我希望整个请求发生在同一个事务中以利用 Hibernate 缓存(嗯,这只是主要原因)。

我认为 @Transactional 注释应该以某种方式向上移动到 GWT 服务器层,但它们必须在 Spring bean 上才能工作,所以......

集成 GWT RequestFactory 和 Spring 管理的事务的最佳方式是什么?

4

2 回答 2

0

托马斯是对的。您需要使用 Open Session in View 模式。关于Spring集成:

只需将其添加到您的 web.xml 中:

<filter>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
    </filter-class>
    <init-param>
        <param-name>entityManagerFactoryBeanName</param-name>
        <param-value>entityManagerFactory</param-value>
    </init-param>
 </filter>
 <filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

使用 注释您的服务类或方法@Transactional

于 2013-07-05T12:18:52.123 回答
0
于 2013-07-04T14:11:44.623 回答