首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

面向对象仍是面向数据

2012-11-07 
面向对象还是面向数据?做过一些j2ee的项目,用过不同的方式,但是还是有一些困惑,实际上我想很多人都有或者

面向对象还是面向数据

?做过一些j2ee的项目,用过不同的方式,但是还是有一些困惑,实际上我想很多人都有或者曾有过这样的困惑,有困惑的人大家一起讨论下,过来人也希望能指点下.我暂且称之为面向对象和面向数据的方式.

?? ?1)面向对象方式:一个典型的j2ee系统一般分为页面,后台,以及数据库.在很多情况下都是根据需求先去设计数据库,那么在根据数据库来设计对象(pojo),在pojo中维护数据库表之间的关系.最后把这些对象在页面上展现出来.当然这只是很简单的情况,这样做出来能够满足OO的思想,从数据库到后台再到页面对象是基本一致的.程序也比较清楚.我称这种方式为面向对象方式.使用这种方式一般都要借助ORM工具.

?? ? ?但是很多人都知道这样做有个缺点,就是有潜在的性能问题.举个简单的例子,我在数据库有三张表,典型的权限管理.USER,ROLE,和中间表USER_PROLE.

?? ? 同样在程序中我该有个User和Role的pojo,User里面包含一个Set的属性,role 象这样:

?

?

public class User { private String userName; private String passWord; private String wifeName; private String roleName; .......................... }

?

?? ? ? ?因为这时以页面开始驱动的,所以,最后结果可能就是一个功能对应一个DTO.不可避免会有很多重复的字段.很不OO,但这块实际上并不是那么难以维护的,每个人维护自己功能的DTO.比较难以维护的是sql语句.为了解决后台数据库与前台页面的不一致很可能写出很复杂的sql语句.

?? ? ?在效率上,如果sql写的得当,效率会比较高,但写的不得当,效率很低,甚至比第一种方法中一大串的sql更慢.

?

?

?? ? ??那么到底哪种方式好呢,我现在觉得要看情况,如果页面的设计能和后台的数据库设计保持一定的一致,那么实际上后台的设计可以更OO.那么第一种方法好些,如果有些功能的数据量特别大,可以在这些功能用第二种方式.

?? ? 但是实际很多项目页面设计是一些人,数据库设计是另一些人,那如果你作为程序后台的设计,我觉得用第二种稍好些.应为页面上要显示的东西和后台的数据库很不一致,你经常要糅合几张表的关系.那么你要在后台来糅合这种关系很困难,所以通过sql来糅合这种不一致也许是稍好些的方法.

?

1 楼 kakashi 2009-05-23   没人来讨论下吗?你的项目里是怎么做的

热点排行