`

分析某位高人对ORM的评价

阅读更多

 

其实,我认为,关系数据库与OO没有阻抗,这一观点是从外部(业务的角度)来看程序和系统,这样来看的话们我们把程序理解成一个故事,应当保存就保存,应当获取就获取,保存和获取是故事中的一些具体情节而已。

 

说到CRUD,就不是这个视角了,外部看,只有“将某个数据保存起来”和“取出来某个数据”而已。而这个“情节”,是永远需要的。

但“CRUD”却不是永远需要的,况且,即便从内部看,很多大型系统,根本就没有CRUD,只有“Save”和“Query”,所谓的“Update”,只是“Mark”和“Add”,因为要保存每一个数据的原始状态数据,不可能删除和覆盖;“Delete”更是不可能的,从来不会有需要删除的数据,即便是错误的,可以归档,可以Mark。

 

是否一天天陷身在系统内部,会有“不识庐山真面目,只缘身在庐山中”?从外部看,当行则行,当止则止,根本就没有矛盾。

 

转帖内容如下:

 

Pere Villega 的博文内容:

 

大部分信息系统都是持久化存储信息然后查询获取,这大部分是通过RDBMS完成的,不久NoSQL运动促使其成为一个关系数据库的替代者,总得来说,我们需要一个存储区域来保存数据。

但是,这不代表没有问题,流行的开发模型是基于面向对象编程语言配以关系数据库,这种组合有致命的问题:对象和关系阻抗不匹配性,换句话说,他们并不能在一起工作得很好,这其中有许多原因。

这不是一个新问题,人们也在艰难努力提供新的解决方案以消除痛苦,从一个开发者角度看,ORM可能缓解一下这种不匹配问题,即使只是稍微低,像Hibernate这样的工具负责与关系数据库层打交道,这样开发者不必花费时间在这上面,但是这并不完美,由于抽象泄漏定律使得问题变得棘手,任何使用过Hibernate的人都发现通过其框架实现的查询都不够完美,那就意味着开发者必须钻研得很深以便知晓如何告诉框架让它按自己的意图行事,这也通常意味着你进入了底层低级别,包括数据库层,阻抗不匹配问题又冒出来了。

这样,ORM作为一个完整的解决方案失败了。

 

banq的博文:

使用ORM相当于对象和数据库两个数据结构,因此存在阻抗矛盾,相反,因为SQL属于算法过程,SQL+数据库反而比较协调,但是做些CRUD还可以,应对复杂的业务,需要翻看各种数据表设计才能明白业务,数据库表又混杂了各种技术性能优化等技术方言,相当于方言夹带普通话,只通普通话(代表业务语言)的人不容易听通,增加沟通的难度。

后来有了Java等对象语言,就有了SQL+数据库+DTO数据Java对象,这就是大部分系统的特点,两个数据结构发生阻抗,改了数据库表还要改Java对象。

Hibernate试图协调对象和数据库两种数据结构矛盾,其实是清官难断家务事,捣浆糊而已,因为从逻辑上对象和数据表两者本来就没有必要搞到一起,搞个映射对应。

Hibernate出来很讨人喜欢,但是做些简单CRUD没有问题,随着项目深入,加上程序员数据库思维影响,使用Hibernate觉得隔着靴子瘙痒,其实我一直认为,如果程序员有阅读一个框架的源码冲动时,说明抽象泄漏已经发生,泄漏出来的坏味道已经让使用者心神不宁了。最终现实是:使用Hibernate的人是SQL与Hibernate两个要一起掌握,其实是增加学习成本。

分享到:
评论
1 楼 lihuiyongapple 2015-07-01  

相关推荐

    基于博途1200PLC的新型彩色广告屏流水灯仿真系统设计与实现

    内容概要:本文介绍了基于博途1200PLC的新型彩色广告屏流水灯仿真系统的设计与实现。该系统利用博途1200PLC控制器、彩色广告屏、流水灯及相关传感器,实现了广告内容的自动化播放和流水灯的流水效果。系统通过PLC控制器对广告屏和流水灯进行编程控制,支持环境感知和智能化控制,提高了广告的吸引力和用户体验。此外,系统还采用了节能环保材料,降低了能耗和环境污染。 适合人群:从事工业自动化领域的工程师和技术人员,以及对PLC控制系统感兴趣的读者。 使用场景及目标:适用于商场、酒店、展览馆等需要展示广告的场所,旨在提升广告展示的效果和智能化水平,同时降低能耗和环境污染。 其他说明:该系统展示了PLC技术在现代广告展示中的创新应用,强调了高可靠性、灵活性和智能化的特点。随着科技的发展,该系统有望在更多领域得到广泛应用。

    西门子200PLC全自动定长裁切机程序:威纶通触摸屏应用下的高精度高效编程

    内容概要:本文详细介绍了西门子200PLC全自动定长度裁切机设备程序的设计与应用。该程序由主程序、长度设定程序、切割控制程序和注释程序组成,通过精确控制电机和气动元件的运作,实现了高精度的裁切效果。威纶通触摸屏程序的加入使操作更加简便,同时程序中添加了详细的中文注释,便于新手理解和掌握。此外,该程序不仅适用于特定设备,还可根据需要修改应用于其他类似设备。 适合人群:对工业自动化感兴趣的初学者以及从事相关工作的技术人员。 使用场景及目标:①帮助新手快速掌握西门子200PLC编程技巧;②提高工业生产中的裁切精度和效率;③提供一种简单易用的操作界面,提升工作效率。 其他说明:随着工业自动化技术的发展,该程序有望在未来得到更广泛的应用和改进。

    基于MATLAB的YoloV3人体目标检测技术及其应用场景

    内容概要:本文详细介绍了基于MATLAB平台使用YoloV3算法进行人体目标检测的方法。首先阐述了人体目标检测技术的重要性和应用场景,如公共场所、安防监控和自动驾驶等领域。接着简述了YoloV3算法的基础理论,强调其高效的目标检测能力。然后逐步讲解了实战操作流程,包括数据准备、环境配置、调用YoloV3算法以及结果展示与评估。最后提供了具体的MATLAB代码示例,帮助读者快速上手并实现人体目标检测。 适合人群:对计算机视觉和深度学习感兴趣的科研人员、工程师及学生。 使用场景及目标:适用于需要实现实时人体目标检测的应用场合,旨在提高检测速度和准确性,推动相关领域的技术创新和发展。 其他说明:随着AI技术的进步,未来会有更多先进算法应用于人体目标检测,带来更多可能性。

    基于自抗扰技术的永磁同步电机矢量精准控制策略

    内容概要:本文探讨了基于自抗扰控制(ADRC)技术的永磁同步电机(PMSM)矢量控制策略。文中介绍了PMSM的特点及其广泛应用背景,指出了传统矢量控制存在的局限性,并详细阐述了ADRC的工作原理,包括跟踪微分器(TD)、扩张状态观测器(ESO)和非线性状态误差反馈控制律(NLSEF)。此外,还展示了如何将ADRC应用于PMSM的速度环和电流环控制中,通过具体代码实例解释了其实现过程。研究表明,ADRC可以显著提高PMSM在面对负载变化和其他扰动情况下的稳定性和响应速度。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是关注永磁同步电机高性能控制方案的专业人士。 使用场景及目标:适用于需要改进现有PMSM控制系统鲁棒性和精度的应用场合,如工业自动化设备、电动汽车等领域。目标是帮助读者理解和掌握ADRC技术,从而优化PMSM的控制效果。 其他说明:尽管ADRC展现了优越的抗干扰能力,但其参数整定仍需深入研究,以确保最佳性能。

    表贴式永磁同步电机滑膜无位置观测器算法仿真:提升电机控制精度与稳定性的新方法

    内容概要:本文探讨了表贴式永磁同步电机(SPMSM)中滑膜无位置观测器算法的最新进展。传统的一阶模型SMO观测器需要使用低通滤波器来滤除开关函数噪声,导致观测角度出现相位滞后,影响电机性能。新型的SMO无位置观测器通过扩张反电势状态,实现了无需低通滤波器即可精确估计反电动势,消除了相位滞后,提升了电机的稳定性和效率。此外,文中还介绍了滑膜技术的应用,确保电机在突加负载情况下仍能保持高效的运行状态。最后,提供了伪代码示例,展示了SMO无位置观测器的核心实现步骤。 适合人群:从事电机控制系统研究与开发的专业人士,以及对现代控制技术和电机控制感兴趣的科研人员和技术爱好者。 使用场景及目标:适用于需要提高电机控制精度和稳定性的应用场景,如电力传动系统、自动化设备、工业机器人等领域。目标是减少转速波动,提高系统的响应速度和鲁棒性。 其他说明:本文不仅深入剖析了理论背景,还提供了实际的算法实现思路,有助于读者更好地理解和应用这一先进技术。

    实训商业源码-微信朋友圈-毕业设计.zip

    实训商业源码-微信朋友圈-毕业设计.zip

    实训商业源码-苹果CMS V10大气橙色风格影视电影视频网站模板-毕业设计.zip

    实训商业源码-苹果CMS V10大气橙色风格影视电影视频网站模板-毕业设计.zip

    实训商业源码-风吟导航-毕业设计.zip

    实训商业源码-风吟导航-毕业设计.zip

    无人机视角多类别交通目标检测数据集.zip

    数据集介绍:无人机视角多类别交通目标检测数据集 一、基础信息 数据集名称:无人机视角多类别交通目标检测数据集 数据规模: - 训练集:14,066张航拍图片 - 验证集:2,697张航拍图片 - 测试集:1,432张航拍图片 检测类别: - 载具类:汽车(car)、巴士(bus)、摩托车(motor)、船(tekne)、火车(tren) - 人员类:行人(insan)、工人(ismak) - 设施类:起重机(kam)、飞机(uap)、未知设备(uai) 标注格式: YOLO格式标注,包含目标边界框坐标及类别标签,适配主流检测框架 二、适用场景 智慧城市管理系统: 支持无人机航拍影像的实时交通流量分析,适用于城市道路车辆监控、港口船舶调度等场景 无人机应用开发: 为无人机自动巡检系统提供训练数据,支持电力巡检、铁路巡查等场景中的多目标识别 交通规划研究: 提供高空视角下的复杂交通场景样本,适用于交叉路口流量分析、交通设施布局优化等研究 安防监控系统: 包含人员与设备的协同检测能力,适用于工地安全监控、港口作业管理等安防场景 三、数据集优势 多维度覆盖: - 同时包含11类交通要素检测,覆盖陆地/水上/空中三维交通场景 - 包含不同天气条件下的高空视角样本,适应复杂环境检测需求 标注质量保障: - 严格校验的YOLO格式标注,确保坐标系统精准对应航拍视角 - 特殊处理小目标检测样本,优化无人机高空拍摄的像素级标注 任务适配性强: - 支持目标检测任务直接训练,兼容YOLOv5/v7/v8等主流版本 - 包含密集目标分布样本,适用于群体目标检测模型优化 场景多样性: - 涵盖城市道路、港口码头、铁路轨道等多种典型场景 - 包含不同光照条件下的日间作业场景样本

    智能消防应急照明与疏散控制系统(深圳合广测控技术)PPT(26页).pptx

    在当今城市化进程加速的背景下,消防安全已成为城市管理和经济发展的基石。面对频繁发生的火灾事故,如厦门BRT公交车纵火、芜湖液化气爆炸等,传统消防管理模式已难以满足现代城市的安全需求。为此,智慧消防信息体系应运而生,它以物联网、大数据、云计算等现代信息技术为支撑,旨在通过智能化手段提升消防工作的效率与精准度,为城市安全保驾护航。 一、智慧消防的需求背景与价值 智慧消防的需求源于多个方面。首先,随着国家治理体系信息化和治理能力现代化的推进,消防工作作为城市管理的重要组成部分,必须紧跟时代步伐,实现数字化转型。其次,传统消防管理模式存在“四轻四重”现象,即重硬件建设轻信息共享、重事后救援轻安全监控、重信息保密轻信息公开、重预案准备轻预警分析,这些问题严重制约了消防工作的有效开展。智慧消防通过构建一体化信息平台,打破信息壁垒,实现信息的实时共享与协同作战,有效解决了上述问题。 智慧消防的价值体现在多个层面。一方面,它利用物联网技术实现全面感知与互联,通过智能传感器、无线通信等手段,对消防设施、重点部位进行实时监测,确保火灾隐患早发现、早处置。另一方面,借助大数据分析技术,智慧消防能够对海量消防数据进行深度挖掘,提供精准的风险评估与预警服务,为消防决策提供科学依据。此外,智慧消防还通过打通基层、消防及各职能部门间的信息共享纽带,实现火警处置过程中的高效协同,提升整体应急响应能力。 二、智慧消防信息体系的核心功能与应用 智慧消防信息体系涵盖了多个核心功能模块,共同构建起一个全方位、多层次的消防安全防护网。其中,消防重点单位物联网监控是重要一环,通过接入既有火灾报警设施、安防视频监控及消防重要设施,实现对重点单位的连续有效监测。一旦发生火情,系统能够自动上报火警信号,并快速对接接处警系统,调派消防力量进行处置。 设施状态监测及上报功能则确保了消防设施的正常运行。系统能够自动监测用户单位消防水、电源、门状态等关键指标,及时发现并上报故障、违规事件,为消防设施的维护与管理提供有力支持。同时,公共消防设施状态监测功能也进一步拓展了消防安全的监测范围,通过监测城市消火栓的碰撞破坏、水压、开关状态等信息,为灭火处置提供便利条件。 社会消防安全网格化管理是智慧消防的另一大亮点。通过划分三级网格,建立权责分明的覆盖中小社会单位的消防管理网络体系,实现了消防安全的群防群治。网格员利用手机App进行日常检查、宣传、采集与报警工作,实现了消防工作的信息化与智能化。此外,安防视频接入与智能分析功能则通过接入平安城市、社会单位等视频资源,利用智能分析技术实现火灾早期探测、人员在岗检测等功能,显著提升了消防工作的主动性与精准性。 三、智慧消防信息体系的展望与未来 展望未来,智慧消防信息体系将继续遵循体系建设规律,运用体系工程方法,按照演化发展思路进行顶层设计、研制建设、集成验证与持续演进。通过不断优化系统架构、提升技术水平、完善标准规范等措施,智慧消防将更好地服务于城市消防安全需求,为构建安全、和谐、宜居的城市环境贡献力量。 同时,智慧消防的发展也将促进相关产业的繁荣与创新。随着物联网、大数据、云计算等技术的不断成熟与应用推广,智慧消防产业链将不断完善与拓展,形成包括设备制造、系统集成、运营服务在内的完整产业生态。这不仅将为消防行业带来新的增长点与发展机遇,也将为城市安全与应急管理领域注入新的活力与动力。 总之,智慧消防信息体系作为现代城市消防安全的重要保障手段之一,正以其独特的优势与潜力引领着消防行业的变革与发展。我们有理由相信,在未来的日子里,智慧消防将不断创造新的奇迹与辉煌,为城市的安全与繁荣贡献更大的力量。

    单直流输入双直流输出Buck转换器仿真设计与实现 - 输入20V输出15V/1A和5V/2A的应用

    内容概要:本文详细介绍了单直流输入双直流输出Buck转换器的设计原理及其仿真实现。首先简述了Buck转换器作为降压型直流电源转换器的工作机制,接着深入探讨了如何在一个20V输入下,分别输出15V/1A和5V/2A的具体设计方案。文中还展示了通过调节开关管占空比、电感值以及电容值等关键参数来达到预期输出效果的方法,并通过仿真实验验证了这一设计的有效性和稳定性。最后,作者提出了未来可能的研究方向,如提升电路效率和降低功耗。 适合人群:从事电力电子、嵌入式系统设计的专业人士和技术爱好者。 使用场景及目标:适用于希望深入了解Buck转换器工作原理及其应用的人群,特别是那些正在寻找解决多路直流供电问题解决方案的研发人员。 阅读建议:对于想要掌握更多有关Buck转换器的知识并应用于实际项目中的读者来说,本篇文章不仅提供了理论指导,还有具体的实验数据支持,因此非常适合用来做为学习资料或者参考资料。

    灭火器检测数据集VOC+YOLO格式3255张1类别.docx

    内容概要:该数据集专注于灭火器检测,包含3255张图片,每张图片均进行了标注。数据集提供了两种格式的标注文件,分别是Pascal VOC格式的xml文件和YOLO格式的txt文件,确保了不同需求下的兼容性。所有图片为jpg格式,标注工具采用labelImg,通过矩形框对单一类别“extinguisher”进行标注,总计标注框数为6185个。数据集旨在支持计算机视觉领域的研究与开发,特别是针对物体检测任务,提供了高质量的标注数据; 适合人群:从事计算机视觉研究或开发的技术人员,尤其是专注于物体检测领域,如安防监控、智能消防系统的研发人员; 使用场景及目标:①作为训练集用于深度学习模型的训练,提升模型对灭火器识别的准确性;②用于测试和验证已有的检测算法性能; 其他说明:数据集不对基于其训练出的模型精度做保证,但承诺提供准确合理的标注。数据集仅含图片及对应的标注文件,不包括预训练模型或权重文件。

    实训商业源码-飞飞-毕业设计.zip

    实训商业源码-飞飞-毕业设计.zip

    实训商业源码-苹果CMS通用电影网站模板[优化版]-毕业设计.zip

    实训商业源码-苹果CMS通用电影网站模板[优化版]-毕业设计.zip

    3D点云匹配-基于Transformer+旋转不变性实现的点云匹配算法-附项目源码+流程教程-优质项目实战.zip

    3D点云匹配_基于Transformer+旋转不变性实现的点云匹配算法_附项目源码+流程教程_优质项目实战

    实训商业源码-电商小程序模板-毕业设计.zip

    实训商业源码-电商小程序模板-毕业设计.zip

    实训商业源码-人生重开模拟器微信小程序源码-毕业设计.zip

    实训商业源码-人生重开模拟器微信小程序源码-毕业设计.zip

    MATLAB环境下基于双向LSTM的NASA涡扇发动机剩余使用寿命预测研究与实现

    内容概要:本文详细介绍了在MATLAB R2018a环境下利用深度学习进行NASA涡扇发动机退化仿真数据集(CMAPSS)的剩余使用寿命(RUL)预测的方法。首先,通过对CMAPSS数据集中特定传感器数据的选择与预处理,确保输入数据的有效性和准确性。接着,构建了一个基于双向长短期记忆网络(Bi-LSTM)的深度学习模型,针对时序数据的特点进行了优化配置,如采用滑动窗口处理、数据归一化以及RUL标签的指数变换等措施来提高模型性能。此外,还讨论了模型训练过程中可能出现的问题及其解决方案,例如梯度爆炸现象,并提供了相应的改进策略。为了更好地适应实际应用场景,文中强调了在部署之前需要进行迁移学习微调的重要性,以应对不同批次发动机之间的细微差别。最后,给出了模型评估的具体方法——使用PHM08竞赛评分函数,该函数能够更加贴合实际运营需求地衡量预测精度。 适合人群:从事航空发动机健康监测系统开发的研究人员和技术人员,尤其是那些希望深入了解如何应用深度学习技术解决设备维护和可靠性问题的专业人士。 使用场景及目标:适用于需要对复杂机械设备进行预防性维护的企业或机构,旨在通过精准预测设备的剩余使用寿命,减少非计划停机时间和维修成本,从而提高生产效率和服务质量。 其他说明:文中提供的代码片段可以直接用于实验验证,同时也分享了一些宝贵的实践经验,如避免内存泄漏等问题的技术细节。

    电力电子领域三相两电平逆变器MPC Simulink仿真实现及应用

    内容概要:本文详细介绍了三相两电平逆变器模型预测控制(MPC)在Simulink中的具体实现方法及其应用场景。首先讲解了坐标变换的基本原理,特别是Clarke变换的具体实现步骤,确保功率不变性的正确转换。接着深入探讨了MPC的核心思想,即通过遍历所有可能的开关状态选择最优解,并展示了关键代码片段。文中还强调了采样时间和PWM载波周期同步的重要性,避免因不同步导致的电流波形异常。此外,提供了调整电流参考值的方法,以及如何逐步增加系统复杂度进行调参的技巧。最后指出MPC相比传统PI控制器的优势在于更快的响应速度,但也带来了更大的计算负担。 适合人群:对电力电子有一定兴趣并希望深入了解模型预测控制(MPC)的初学者和技术爱好者。 使用场景及目标:适用于想要掌握三相两电平逆变器MPC控制理论与实践的人群,帮助他们理解坐标变换、预测控制算法的设计思路,以及如何利用Simulink平台构建和优化相关仿真模型。 其他说明:文中提供的代码片段和注意事项有助于读者更好地理解和操作Simulink仿真环境,同时提醒了一些常见的错误和优化建议。

    实训商业源码-苹果cms仿泡团影视网主题模板-毕业设计.zip

    实训商业源码-苹果cms仿泡团影视网主题模板-毕业设计.zip

Global site tag (gtag.js) - Google Analytics