请问我应该把POJO暴露给表现层jsp吗?

06-01-05 Ericf
在项目中,主要使用hibernate和struts作为框架

其中包含有pojo包,和dao包和business报,business包里主要通过一个类暴露出各种业务方法

但随着不断讨论,在表现层是否引用pojo包里的对象成了一个问题,比如

:

business包里的类有一个方法

public Catalog getCatalogById(long id);

这个方法返回的Catalog是pojo包里的一个pojo,然后在struts action中把这个catalog存入到request,然后在页面里取得这个对象,取出属性展现在页面上

但这样的设计,使pojo包里的bean混入到表现层?不知道这样设计是否合理呢?

谢谢大家!

banq
2006-01-06 10:59
所以在Action和POJO中间需要加一个Service,Action--->Service--->POJO

你将需要暴露对外服务,供客户端使用的功能做成一个Service。

这也就是说:仅仅使用struts+hibernate是不够的,因为没有业务组件或业务构架的框架,有三种选择:

Struts+EJB+Hibernate

Struts+Spring+hibernate

Strute+Jdon+Hibernate

Ericf
2006-01-06 13:09
1)banq,请问你所指的Service是怎样连接起Struts和POJO的呢?

按我的理解,好像与原先设计里的business包里的业务类是同一个意图?

2) 这个Service和Action交互的时候,例如要获取一个Catalog信息,是应该在Action里调用Service的方法,获取信息后传给展现页面呢?

亦或者是应该在Action里获取Service的实例,然后把这个实例传到页面里?

多谢!

banq
2006-01-09 15:38
1.是的 和业务类是同一个意图,只不过service服务的意思为外界服务的,实际也是SOA中的服务的意思。只不过你这个服务是为内部客户端Action服务的,稍微通过websevice加工配置一下,就可以对外界完全OPEN.

2.Action是Service客户端,到这里Service也就结束,Service就象邮车一样,你从邮车中获取Catelog这样Domain Model之后就可以了,然后你将Catalog转换为界面模型如ActionForm传到页面中即可。

猜你喜欢