POJO(plain old java Object)[译:简单初始Java对象]。它简单(因为只有set/get方法)吗?或是我们把应该把它弄得复杂点(带点业务判断)?究竟它在我们J2EE应用中扮演一个什么样的角色呢?一个Anemic Domain Model,Rich Domain Model, DTO, O/R mapping Entity........!以前我的系统中POJO都是一个贫血的模型,只有set/get方法!它的职责就是把前端页面的数据从formBean中转移过来(用反射),作为持久层的对象。这里POJO有两个角色,一个角色是传送数据,另一个是角色是PO(持久对象)。一段时间后我发现这样做效率低下,想像一下有些业务处理,如一个银行帐户的pojo,里面有一个金额和利息字段,这个金额是通过一些公式计算后得出来的,开始时我们在业务层里把金额算出来后set到帐户pojo金额字段里。我开始思索把一些都是计算或者纯逻辑的东西pull Up到pojo中。这时候我的pojo变成一个Domain Object。尽管不是一个Rich的Domain Model,但毕竟前进了一小步。再后来用到了webwork2,由于webwork2里没有了struts formBean,使用拦截机设值,ModelDriven模式下我的持久Entity就是一个formBean和po的结合, 在ACTIO中它是一个有值的VO,在DAO实现层变成一个PO。在这里我的pojo继承了O/R Entity类,并把合适的业务层的代码都移到相应的了Pojo中,当然没有持久层的代码。这样我的系统的部分pojo变成了Rich Domain Model。在Ejb下,由会话门面管理对POJO业务对象访问对比起笨重的entity bean有更高的效率和可移植性。尽管Ejb下的POJO不能享受entity bean的CMP策略,但有了spring 的IOC后,一切变得可配置了!POJO还有很重要的一个优势就是pojo中的业务可以脱离具体容器运行测试!在这里,pojo是贫血还是冲血应该取决于你的业务应用,记住:不要把简单的问题搞复杂了,但把复杂的问题分解成简单的问题一直就是我们追求的!
posted on 2005-11-24 16:46
java驿馆 阅读(606)
评论(1) 编辑 收藏 所属分类:
J2EE随谈