论坛首页 Java企业应用论坛

O/R Mapping是末,OOAD是本

浏览 41863 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-03-31  
jeffrey_he 写道
robot_liu 写道
jeffrey_he 写道
深有体会...
原来有一个delphi系统,现在用JAVA来做成B/S的。那帮老大死活接受不了hibernate,痛苦一阵后,只好放弃了。


不会吧?早知道你让我帮你说呀

还有啊,实际上这年头谁都会OO的(不信你随便拉出个人来问问OO是啥),就是OO的水平不同而已。


问题集中在以下几个方面:
1.数据库由他们设计,他们不习惯用逻辑ID,喜欢用业务主键。这也还好,可是他们还喜欢用组合的业务主键。开始时,他们尝试使用逻辑ID,但后来终究以不能适应告终。

2.喜欢在一个表中存入关联表中多个字段,而不只是关联主键,说是为了提高查询效率。而我建议到后期进行查询的优化,尽量花小的代价保持数据一致性。

3.在第2个问题中,也有因为业务需要保留历史记录的,所以存放关联表中的多个字段。
例如:在交易表中记录帐户行编号同时记录帐户行外部帐号和内部帐号。本来我想剔除后面两项,只用帐户行编号来关联。但他们说有时帐户行信息改变了,但是查询统计时又希望看到当时交易资金流向的实际帐号。
这个问题不知道怎么解决,我总感觉是需求出了问题,可能是需求上应该进行更细致的分析。

不习惯用OO方式思考,没有对象建模,直接就是数据库设计。例如信用证LC,我觉得应该抽出来作为一个对象,而他们直接就是设计开证信息表,将信用证信息和其他业务信息混在一堆。
想想他们那时用DELPHI开发,大多就是先搞搞需求的分析,然后就是画出功能界面,然后针对界面弄张表,存放界面填写的数据。然后写函数,设置到事件触发。
现在的旧系统还是能用的,但是所有的开发人员都在外面维护或做二次开发。一旦碰到某点需求的改动,动不动就是一帮人在外面弄几个月。

我原来在沿海地区搞开发,现在在内地搞开发,感觉两地的程序员思考的方式完全两样。一阵痛苦的沟通之后,他们认为问题出在hibernate身上,所以要放弃hibernate,改用JDBC。我觉得问题并不在hibernate身上,而是OO的问题。即便用JDBC,我想还是会碰到上面说的问题。现在我已经放弃了,因为势单力薄,你觉得有办法说服他们么?


我觉得你第二个问题是你的设计不好:
帐户表
应该是要加多两个字段,1。ID序列号。2。当前可用标志位。
这样,修改某个帐号,相当于新加一个帐号,而把原来的标志位设置位F。
而平时要用到单个帐号表时候,要把可用标志位作为一个FILTER。
在交易表里,存帐号的ID序列号,这样查询时就没有查不到的旧记录了。

不知这样能否满足你的要求。
0 请登录后投票
   发表时间:2005-03-31  
动物园的猪 写道
我也在努力提高OOAD的能力,推荐一些书给想在这方面努力的朋友们:

UML和模式应用
分析模式
Objects Model(影印版)
ColorUML(电子版)
领域驱动设计(电子版)
敏捷软件开发-原则模式
数据资源建模手册
UML业务建模


为什么推荐这几本?
0 请登录后投票
   发表时间:2005-04-01  
真不知道这种本末道置,在目前软件行业中是一种普遍现象还是个别现象。小弟刚出道不久,经历了3家公司了。都遇到了是以纯数据库为中心的设计方式。OO最多只能算是用了具有OO特性的java吧。目前这家公司经理说为了规范所以就用hibernate+struts。结果最多只是用HQL代替了SQL罢了。而且数据库设计得也很难理解。经历了几家公司后,我想可能是自己的能力问题吧。总是不能适应那些从数据库开始,然后在jsp中写一堆脚本。所谓的框架也只是一个摆设而已。
小弟重开始学习就习惯用分层的方式开法,偶尔还考虑一下设计一个框架,但是这一切都被其他人视为浪费精力。我知道开发需要一个团队,所以我努力的去适应团队中的开发方式。一个人就负责一个模块的所有开发,让我几乎又想换一个公司了。
我很想知道现在还有些什么样的公司在抓根本呢?
0 请登录后投票
   发表时间:2005-06-26  
我这一年都在struts与hibernat下做事。四个月前我发现这个问题,认为这是一个无法解决的矛盾。

前两天听Robbin解释,100个程序员有10个懂OO,却有90个懂Relation。很形象。没办法,现状如此。
0 请登录后投票
   发表时间:2005-06-27  
这个不奇怪, relation要比OO简单而且容易掌握的多.
这方面的具体内容可以听一下, 曹晓钢最近一期上海聚会的录音.
0 请登录后投票
   发表时间:2005-06-27  
好像提出了一个显而易见的问题
0 请登录后投票
   发表时间:2005-06-28  
用HQL代替SQL,并叫喊着HQL更方便,可笑。

可是什么样的OO才是合格的?  我认为,只要现在的OO设计,能够方便开发,我想要什么对象,很容易获得,这就OK。如果出现性能、或者读取想要的对象困难等问题,那就Refactor,知道又觉的可以方便的获取对象进行编程。

如果不能,那就直接JDBC完了,干吗非要穿上一层ORM的皮。
0 请登录后投票
   发表时间:2005-06-28  
要让DBA学习OOD恐怕没有希望!
公司的DBA就是这样的。数据库表也是关联主键的。人又很picky。所有一个数据字段都要按他的喜好命名,否则别想改动数据库schema。
0 请登录后投票
   发表时间:2005-07-13  
partech 写道
robbin 写道

OOAD实际上是最接近人类思维习惯的抽象逻辑分析方法,我个人认为其实不需要非要专业的去学习才能掌握,其实只要你能够抛开具体的技术,例如抛开数据库模型,抛开编程语言,抛开运行环境,当自己是一个不懂计算机的业务专家,集中精力去搞清楚业务规则,就已经可以很好的进行OOAD了。


OOA可以如此,OOD则是另一回事。同时我不认为OOAD如此轻松。经过
深刻思考和大量实践,OOAD才有可能是一项乐事。
OOAD并不接近于人类思维习惯的抽象逻辑分析方法,OOAD接近自然本身的事实。


   呵呵,这话说得好,OOA我是不懂了,不敢说什么,不过OOD吗,我认识的人中还没有发现谁懂
0 请登录后投票
   发表时间:2005-07-18  
不是说OO长处就是描述流程,数据结构问题它根本就跳过去了,不解决么?
我倾向于没有银弹,OO非万能
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics