快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

OOP和RDBMS不匹配,谁向谁妥协,还是找个和稀泥的?


OOP和RDBMS不匹配        OOP的面向对象理论和RDBMS所基于的关系理论本来就不是一回事,理论不同,不匹配是很正常的事情,主要有以下表现:
粒度   为了概念的清楚和责任的单一,对象的设计粒度比较细。比如,一个User对象包含一个Address对象,Address里面有country, city, street等属性。但是,为了性能等方面的考虑,数据库表的设计粒度相对较粗,就上例来讲,可能有一个只有User表,地址方面的country, city和street等只作为字段。多态   多态是OO的特性,继续结构是很常见的,但是RDBMS则没有多态。标识   就Java而言,对象标识是reference,一般判定对象是否一样是用equals()方式,而数据库表中的一行的标识是主键关联   一个对象同其他对象发生关联,是通过持有其他对象的reference来表示,并且有方向,可以是单向,也可以是双向,可以一对一,一对多,多对多。RDBMS中的两个表关联是通过外键,并且只有一个方向,只能一对一或多对一,假如要多对多则需要加关系表了。        OOP和RDBMS的矛盾是在所难免的,就像两兄弟吵架,日子还是要过,我们的程序还是要写的。解决不匹配的问题,一般就下面三招:向RDBMS妥协   这是最常见的了,既然你是“关系”数据库,那我不OO了还不成吗?数据库表结构建好了,我就围绕着这些个表编程。不管是直接上SQL还是用大量只包含数据的VO,总之,面向过程。好处是,轻易理解,这样程序员最好找;不足嘛,技术上和业务上的重复代码都太多,难以维护,没有审美,只有疲惫。向OOP妥协,用面向对象数据库   这个不说了,我还没见过传说中的面向对象数据库,并且在可预见的将来继承看不见。用个和稀泥的作中介,安抚两方   该OOD/OOP咱还OO,该用关系数据库咱还用,找个ORM工具让两方各得其所。这也许是最好的解决方案了,就算不能解决全部的问题,能解决九成的问题,就大大的节省了我们的时间,并且大大的提高了系统的可维护性。谁都知道,Java世界里,ORM实事上的标准是Hibernate。



返回类别: 教程
上一教程: 编写跨平台Java程序注重事项
下一教程: 问题:Thread .Sleep(500)后你的线程睡了多久?

您可以阅读与"OOP和RDBMS不匹配,谁向谁妥协,还是找个和稀泥的?"相关的教程:
· 原来Eclipse3.0.1中的jboss32x.server文件不匹配JBoss3.2.6!郁闷~
· apache tomcat的snoop servlet漏洞 
· Java 理论与实践:变还是不变?
· 最终还是手工输出XML对象可靠
· JAVA类型和SQL类型的匹配
    微笑服务 优质保证 索取样品