热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

我们为什么在重复之业务对象和关系实体

之前写过一个为什么我们要重复,可是,现在忍不住又要发发牢骚了这是因为,我现在感觉到还是在重复三层结构让我们不用重复修改所有层次,而只是修改某一层,来适应需求的变化例如修改表示层以产生桌面应用或浏
之前写过一个为什么我们要重复,可是,现在忍不住又要发发牢骚了
这是因为,我现在感觉到还是在重复
三层结构让我们不用重复修改所有层次,而只是修改某一层,来适应需求的变化
例如修改表示层以产生桌面应用或浏览器应用,修改数据存储层,来适应不同的数据库系统
ORM让我们享受到更多好处,例如,你不再为迁移到不同的数据库而去修改代码
MS的ENTERPRISE也很不错,为常见任务提供一个统一的解决方法,也省却了我们不少功夫
可是,问题就在于
我们有了业务对象,有了关系数据,我们用ORM将他们联系起来了
有一天,我们的业务对象变了,例如,我们需要多记录一只猫的胡须长度(乱扯的),结果我们更改了业务对象CAT,但是,我们还得更改数据库中的关系TABLECAT,为它多添加一个字段,这还不够,如果你用了ORM,你还得更改关系的映射,假如你不用ORM,那会更糟,你可能要更改CRUD操作中涉及到胡须长度属性的所有方法
ORM的好处是在这种情况下,让你可以固定的更改三处,假如你不用ORM,那你可能更改的就不是三处了,而且,你自己得一处一处对比你找到底需要更改哪处,结果是你得到更多的错误,需要更多的时间来调试和解决这些问题

为了这些问题,我很烦,相信各位也烦.真有不烦的哪位,就支个招吧
问题在于我们为什么不把对象存储为对象?
业务对象建立了,存在于内存了
跟存在于硬盘,存在于网络流中?有什么区别吗?只是介质不同罢了.
关系和对象这两种不一致的东西,让我们费劲的在两者间去转换,适应,以寻求解决方法.
ORM这东西,现在看来味道不错,可是,想想,他不过是我们吃不到香肠只能吃窝窝头的替补罢了,完了,我们还得叫,好吃,好吃.
我的开发经历中,对于重复,就是两种经验了:
一种是上次讨论CODESMITH时提到的代码的重复
第二种就是现在提到的,业务对象的变动和数据表示变动无法自适应的重复.
有重复就有抽像的余地,有重复就说明可以归纳,谁来给我归纳一下?
推荐阅读
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • MySQL Hash函数与基础总结(一)
    本文探讨了MySQL中常见的错误提示“不存在此列”的产生原因,以及查询缓存的优缺点。同时,介绍了如何关闭查询缓存,MySQL的常用存储引擎及其特点,以及如何针对表级别设置不同的存储引擎。 ... [详细]
  • Android 属性 allowBackup 的安全风险分析
    在 Android API Level 8 及以上版本中,系统提供了一种机制来备份和恢复应用程序数据。通过设置 allowBackup 属性,开发者可以控制是否允许这种备份和恢复功能。然而,这一功能也带来了潜在的安全风险。 ... [详细]
  • 列表生成式虽然简洁高效,但在处理复杂算法时存在局限性。本文将介绍生成器(generator)的概念及其优势,探讨如何通过生成器解决列表生成式的局限性,并提供实际示例。 ... [详细]
  • 开发了一款怪物猎人 XX/GU 的中文数据库,提供更丰富的游戏信息和更好的用户体验。 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • 整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ... [详细]
  • mybatis 详解(七)一对一、一对多、多对多
    mybatis详解(七)------一 ... [详细]
  • 本文介绍了编程语言的基本分类,包括机器语言、汇编语言和高级语言的特点及其优缺点。随后详细讲解了Python解释器的安装与配置方法,并探讨了Python变量的定义、使用及内存管理机制。 ... [详细]
  • 在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri ... [详细]
  • 本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 编译过程涉及多个阶段,每个阶段都有其特定的任务和方法。本文详细介绍了编译过程的五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化和目标代码生成。通过这些阶段,编译器将源代码转换为目标代码。 ... [详细]
  • 作为一名饼干爱好者,我尝试过各种各样的饼干。虽然威化饼和消化饼都有其独特的风味,但我对柠檬夹心饼干情有独钟。这种饼干不仅口感丰富,还带有清新的柠檬香味。 ... [详细]
  • 在 PHP 中,使用 `continue` 关键字结合数字可以有效地终止嵌套的 `foreach` 循环。本文将详细介绍如何使用 `continue` 加数字来控制不同层次的循环。 ... [详细]
author-avatar
脏的孩_963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有