[领域模型] 领域模型--Now mission impossible[Java]
潜水N久了,冒个泡,几年前就在javaeye参与过关于领域模型的讨论,越讨论我就越对这个模型越没有信心。
领域模型是什么? 想到一个笑话: 工作时把我当超人,加薪时把我当隐形人。领域模型就是为实现这么个理想而提
出来的。什么贫血什么充血,其实就是要实现 对象化编程,把数据库当做隐形人。再说白点:就是数据库在与不在一个
样!对象在故我在,所有的方法都自然而然的加注到这么个对象上。
领域模型的理想:
还是银行转账这么个例子:
事务开始:
finder.find(帐户A)
帐户A.减(500)。
finder.find(帐户B)
帐户B.加(500)。
流水帐户.记录(XXX)
事务结束。
但是愿望是美好的,现实是残酷的 持久化是一座难以翻越的高山。就我浅薄的知识范围内来说,我没有找到一个很好
的技术解决方案(java)
(1)事务范围内所有的对象的状态都要记录。
(2)事务范围内所有的对象的变化都要记录。
(3)事务结束是所有变化了的对象都要回写入数据库。
上面这三件事看似简单,其实也就是所有数据库操作的全部,即使是hibernate也没做到这一点:
(1)事务开始时就要建立一个对象图。
(2)访问过的所有对象都要纳入这个事务发起的对象图中
(3)无侵入的记录对象图中所有字段的变化。
(4)回写变化了的字段【有可能是增量的】。
(5)当出现异常时候,需要回滚【对象图是重建还是全部废弃?】
如果持久化框架能做到上面几点,才能谈真正的领域对象。
目前来说hibernate已经做到了一部分对象图的功能,但是仅仅是一小部分。
另外我在论坛上经常看到DAO可以隔离数据的存贮,但我要说的是你如果用上了hibernate的话,想要随时替换成ibats几乎是不可能的,除非hibernate的大部分功能,你不用。
分享到:
相关推荐
在Java程序中如果要使用MongoDB,需要MongoDB JDBC驱动。本资源内含4个文件:mongo-java-driver-3.9.1.jar,MongoDB JDBC驱动包。mongo-java-driver-3.9.1-sources.jar,MongoDB JDBC驱动源代码包。mongo-java-...
To begin your download, please click the Download Now button below. Download Now » mysql-connector-java-5.1.23.zip MD5: 1a6cbbfccab7884134471992005fe0f9 Size: 3.7M Signature java编程eclipse和...
esp-idf-espnow-gateway 使用esp-idf的esp-now和MQTT之间的网关。 我的灵感来自于。 ESP-NOW可以与ESP8266 / 8285一起使用,但我们不能同时使用WiFi。该项目将ESP-NOW接收的数据传输到MQTT。 电池寿命 ESP8266 / ...
在电力系统自动化领域,通信规约扮演着至关重要的角色,它定义了不同设备之间数据交换的格式和规则。KW-2200电力规约是一种专门用于电力系统数据传输的标准协议,主要应用于智能电网中的远程监控、数据采集和故障...
ESP-NOW是Espressif Systems为ESP8266和ESP32设计的一种低延迟、点对点的数据传输模式,它不需要建立连接或者网络基础设施,非常适合用于设备间的即时通信。在这个"ESP8266使用ESP-NOW示例工程"中,我们将深入探讨...
本压缩包“KW-2200-now.rar”提供了一套用于主站和从站模拟测试的工具,特别针对IEC 101和IEC 104协议的开发与测试人员。 首先,我们来详细了解一下IEC 101。它是国际电工委员会(IEC)制定的第一个电力系统通信...
### ServiceNow 数据模型详解 #### 一、概述 ServiceNow 的数据模型是其核心功能之一,为各种IT服务管理(ITSM)、配置管理数据库(CMDB)和IT运营(ITOM)提供了强大的支撑。该数据模型的设计旨在确保高度灵活性...
ServiceNow是全球领先的企业业务流程管理SaaS提供商,其产品线涵盖了IT服务管理(ITSM)、客户服务管理(CSM)、人力资源管理(HRM)等多个领域。ServiceNow采用“one platform, one data model”战略,通过其核心...
在视觉特效和动画制作领域,After Effects是不可或缺的工具,而Physics Now则为用户提供了更直观、更强大的物理效果模拟功能,使得动画中的物体运动更加真实且富有动态感。 首先,我们要理解动力学在动画制作中的...
《电子比赛now.zip——探索STM32-F0/F1/F2单片机及嵌入式技术》 在当今数字化时代,电子竞技与嵌入式技术的结合正日益显现其强大的潜力。"电子-比赛now.zip"这个压缩包,无疑为我们提供了一个深入学习和实践STM32...
Apache JMeter是一款强大的性能测试工具,专为评估应用程序和...它的强大功能、灵活性和社区支持使其成为性能测试领域不可或缺的工具。通过使用这个压缩包,用户可以避免在线下载的麻烦,快速开始他们的性能测试工作。
"Atom-atom-carbon-now-sh" 是一个专门为Atom编辑器设计的插件或包,它的主要功能是与"Carbon.now.sh"服务进行集成。Carbon.now.sh是一个在线工具,它能将代码片段渲染成高质量的图像,常用于分享代码截图,呈现出...
Blade::component('components.now-sms-form', 'nowsmsForm'); NowSms::setConfig([ 'url' => config('nowsms.url'), 'port' => config('nowsms.port'), 'username' => config('nowsms.username'), 'password'...
在IT领域,时间管理是至关重要的,特别是在编程和数据分析中。"date-time-old-n-now.rar_Time"这个压缩包文件显然与时间处理有关,其目的是区分旧的时间(old)和当前时间(now)。在这个主题中,我们可以深入探讨...
Terraform ServiceNow提供商 Terraform的自定义提供程序,用于管理ServiceNow实例中的对象,以在实例外部开发系统应用程序。 当您要创建具有适当源代码控制和持续开发集成的应用程序时,此功能特别有用。 要求 ...
ESP-Now-Gateway 具有W5500以太网的ESP8266作为ESP-Now节点的网关运行。 包含节点演示代码。更多信息提供了有关此项目的更多信息。组件此存储库分为两部分,网关代码(ESP-Now_Gateway)和独立传感器节点的演示/执行...
在`now-master`这个压缩包中,我们可以期待找到Go-Now的源码,通过阅读和学习源码,我们可以深入理解其设计理念和实现方式,这对于提升Golang的日期和时间处理能力大有裨益。同时,通过研究源码,也可以借鉴其优秀的...
ESP8266 和 ESP32 的 ESP-NOW Arduino 库 WifiEspNow是 ESP-NOW 的 Arduino 库,ESP-NOW 是乐鑫定义的无连接 WiFi 通信协议。 有关 ESP-NOW 的工作原理及其限制的更多信息,请参阅。 特征 是 ESP-IDF 中 ESP-NOW ...