struts2 spring jpa是最佳实践

时间:2012-03-06 10:58:07

标签: spring struts2

我有一个用Struts2 Spring3 JPA2和hibernate编写的应用程序。在这个应用程序中,我有以下级别:
- struts2行动
- 弹簧服务
- 春天DAO

因此,一个struts动作调用一个服务,它可以包含对一个或多个dao对象的调用 为了在屏幕上显示信息,我为实体创建了一些“镜像”对象;即:EmailMessage实体有一个EmailMessageForm bean,用于显示/收集来自webforms的数据(我不知道这是否是最佳做法),因此我的问题。
在EmailMessageServiceImpl中,我有一个名为:

的方法
 public List < EmailMessage > getEmailMessages(){ 
     //code here   
 }

并且,如果我从struts操作调用此函数,则无法获取依赖项,因为会话已过期(我有TRANSACTION实体管理器)。因此,一种解决方案是创建另一种方法

List<EmailMessageForm> getEmailMessagesForDisplay()
{
//....
} 

这里调用getEmailMessages()并将其转换为表单对象 你推荐我什么? 这类问题的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

如果“依赖”是指“延迟加载的对象”,IMO最好在点击视图层之前获取所有必需的数据。在您当前的体系结构中,它看起来像是一种检索DTO的服务方法(“表单bean”;我对使用该术语犹豫不决,因为它很容易与Struts 1混淆)。

有人说在View中使用Open Session过滤器/拦截器更好。它更容易,但如果视图开发人员没有注意,可能会导致意想不到的后果,包括多个N + 1查询等。