欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PO是否应该上传到View层呢?问题的延续…… HibernateiBATISJDBCORM中间件 

程序员文章站 2022-07-12 18:31:54
...

javaeye又出了一贴,是关于这个论题的:http://forum.iteye.com/viewtopic.php?t=5282

我只是把我的理解说一下:

为什么要把O/R映射得到的Object说为PO呢?对,是的,它是由Hibernate或者iBatis这些ORM中间件生成的持久对象,所以就是PO(废话!),不过你只要仔细回头一想想,也许PO不能只认为是PO,他应该是DO,也就是域对象,拥有对其个体数据进行操作的对象。

我们返回来去想想ORM出现的原因吧。在JDBC时代,我们头痛的是怎样把RDBMS中的记录读取出来映射成我们的域对象,也就是说,我们通过JDBC读取数据,然后生成DO,然后把DO用于整个业务逻辑层,DO代表着实体对象。直到Hibernate这样的中间件的出现,则彻底解决了上述所说的难题,也就是说ORM的任务是把RDBMS数据库中的记录转换成我们域对象DO。

这样问题就演进到DO是否应该提升到View层了。
有人说要用到DTO,也就是数据传输对象,也就是把DTO包装成没有逻辑意义的值对象提交到View层,从而把lazyloading的DO平面化,在大型的分布式J2EE项目中这样是很好的,可是面临一个问题,就是当业务逻辑层返回的是一个集(Set or List)怎么办?唉,没办法,转换它吧(仔细数一下,总共进行了3次循环,在JDBC底层一次,在业务逻辑层一次,在view层一次,而且每一次都是类似的转换一下而已,如果是分布式的,那么这样服务器受到的压力就不会很大)。所以在小型的不存在分布式Java Web中,一般都是把DTO上传到View层(减少一次循环)。

-------------------------
师兄跑去卖家俱去了,哈,一个程序员跑去卖家俱,有趣……
也难说,弄不好我比他还惨,还离奇呢!!