我们为什么在重复之业务对象和关系实体
作者:脏的孩_963 | 来源:互联网 | 2023-05-18 20:54
之前写过一个为什么我们要重复,可是,现在忍不住又要发发牢骚了这是因为,我现在感觉到还是在重复三层结构让我们不用重复修改所有层次,而只是修改某一层,来适应需求的变化例如修改表示层以产生桌面应用或浏
之前写过一个为什么我们要重复,可是,现在忍不住又要发发牢骚了
这是因为,我现在感觉到还是在重复
三层结构让我们不用重复修改所有层次,而只是修改某一层,来适应需求的变化
例如修改表示层以产生桌面应用或浏览器应用,修改数据存储层,来适应不同的数据库系统
ORM让我们享受到更多好处,例如,你不再为迁移到不同的数据库而去修改代码
MS的ENTERPRISE也很不错,为常见任务提供一个统一的解决方法,也省却了我们不少功夫
可是,问题就在于
我们有了业务对象,有了关系数据,我们用ORM将他们联系起来了
有一天,我们的业务对象变了,例如,我们需要多记录一只猫的胡须长度(乱扯的),结果我们更改了业务对象CAT,但是,我们还得更改数据库中的关系TABLECAT,为它多添加一个字段,这还不够,如果你用了ORM,你还得更改关系的映射,假如你不用ORM,那会更糟,你可能要更改CRUD操作中涉及到胡须长度属性的所有方法
ORM的好处是在这种情况下,让你可以固定的更改三处,假如你不用ORM,那你可能更改的就不是三处了,而且,你自己得一处一处对比你找到底需要更改哪处,结果是你得到更多的错误,需要更多的时间来调试和解决这些问题
为了这些问题,我很烦,相信各位也烦.真有不烦的哪位,就支个招吧
问题在于我们为什么不把对象存储为对象?
业务对象建立了,存在于内存了
跟存在于硬盘,存在于网络流中?有什么区别吗?只是介质不同罢了.
关系和对象这两种不一致的东西,让我们费劲的在两者间去转换,适应,以寻求解决方法.
ORM这东西,现在看来味道不错,可是,想想,他不过是我们吃不到香肠只能吃窝窝头的替补罢了,完了,我们还得叫,好吃,好吃.
我的开发经历中,对于重复,就是两种经验了:
一种是上次讨论CODESMITH时提到的代码的重复
第二种就是现在提到的,业务对象的变动和数据表示变动无法自适应的重复.
有重复就有抽像的余地,有重复就说明可以归纳,谁来给我归纳一下?
推荐阅读
-
本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ...
[详细]
蜡笔小新 2024-11-17 15:45:08
-
本文探讨了MySQL中常见的错误提示“不存在此列”的产生原因,以及查询缓存的优缺点。同时,介绍了如何关闭查询缓存,MySQL的常用存储引擎及其特点,以及如何针对表级别设置不同的存储引擎。 ...
[详细]
蜡笔小新 2024-11-17 15:16:40
-
-
在 Android API Level 8 及以上版本中,系统提供了一种机制来备份和恢复应用程序数据。通过设置 allowBackup 属性,开发者可以控制是否允许这种备份和恢复功能。然而,这一功能也带来了潜在的安全风险。 ...
[详细]
蜡笔小新 2024-11-17 11:33:44
-
列表生成式虽然简洁高效,但在处理复杂算法时存在局限性。本文将介绍生成器(generator)的概念及其优势,探讨如何通过生成器解决列表生成式的局限性,并提供实际示例。 ...
[详细]
蜡笔小新 2024-11-17 11:19:20
-
开发了一款怪物猎人 XX/GU 的中文数据库,提供更丰富的游戏信息和更好的用户体验。 ...
[详细]
蜡笔小新 2024-11-17 11:08:28
-
本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ...
[详细]
蜡笔小新 2024-11-17 11:05:00
-
整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ...
[详细]
蜡笔小新 2024-11-17 10:24:41
-
mybatis详解(七)------一 ...
[详细]
蜡笔小新 2024-11-17 10:03:06
-
本文介绍了编程语言的基本分类,包括机器语言、汇编语言和高级语言的特点及其优缺点。随后详细讲解了Python解释器的安装与配置方法,并探讨了Python变量的定义、使用及内存管理机制。 ...
[详细]
蜡笔小新 2024-11-17 09:03:36
-
在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri ...
[详细]
蜡笔小新 2024-11-17 08:51:52
-
本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ...
[详细]
蜡笔小新 2024-11-17 07:45:07
-
驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ...
[详细]
蜡笔小新 2024-11-16 22:04:31
-
编译过程涉及多个阶段,每个阶段都有其特定的任务和方法。本文详细介绍了编译过程的五个阶段:词法分析、语法分析、语义分析与中间代码生成、优化和目标代码生成。通过这些阶段,编译器将源代码转换为目标代码。 ...
[详细]
蜡笔小新 2024-11-16 21:05:14
-
作为一名饼干爱好者,我尝试过各种各样的饼干。虽然威化饼和消化饼都有其独特的风味,但我对柠檬夹心饼干情有独钟。这种饼干不仅口感丰富,还带有清新的柠檬香味。 ...
[详细]
蜡笔小新 2024-11-16 21:03:14
-
在 PHP 中,使用 `continue` 关键字结合数字可以有效地终止嵌套的 `foreach` 循环。本文将详细介绍如何使用 `continue` 加数字来控制不同层次的循环。 ...
[详细]
蜡笔小新 2024-11-16 20:02:30
-