设计模式-领域逻辑模式-SQL的分离

尽管SQL已经在商业软件中广泛应用,但它在使用中还存在一定缺陷

  • 许多应用程序开发者不能充分理解SQL,同时很多习惯用SQL的开发人员又可能组织不好程序代码。
  • 尽管现在有很多技术可以把SQL封装在程序里,但大多封装的还很牵强。

SQL分离的思路:放到独立的类里,以表结构为基础,每个表对应一个类。这些类为数据表建立了一个入口。

两种入口:

  • 为查询结果的每一行产生一个实例-行数据入口
  • 使用记录集,每个表由一个类管理-表数据入口

如果把领域模型和SQL一起考虑,可以把领域逻辑加入到入口类中,并且负责数据库的存取过程-活动记录模式

活动记录模式-一个顾客领域对象知道如何与数据库表交互


但是,还有问题:
如果领域逻辑过于复杂,领域类和表的一对一匹配也开始随着领域逻辑的加入而失效
关系数据库无法处理继承,使用其他面向对象模式非常困难
思路:
领域模型和数据库完全独立,可以让间接层完成领域对象和数据库表之间的映射。这个数据映射器处理数据库和领域模型之间的所有的存取操作,并且允许双方都独立发生变化。

行为问题:加载到内存中的对象之间需要保持一致性,即同步问题。
思路:采用工作单元 
工作单元能够跟踪所有从数据库中读取的对象以及所有以任何形式修改过的对象
负责将更新提交到数据库
编程人员将工作提交给工作单元处理,而不是直接调用明确的保存方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486641.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒商城实战笔记-46-商品服务-API-三级分类-配置网关路由与路径重写

文章目录 一,准备工作1,新增一级菜单2,新增二级菜单 二,前端树形界面开发1,开发分类展示组件 三,远程调用接口获取商品分类数据1,远程调用2,路由配置 错误记录 本节的主要内容&#…

Cisco ISR 2代路由器,1900,2900,3900系列RTU License使用方法

1 情况说明 客户处的2台Cisco 2911要开启ip sla ,但发现无法支持,查询得知需要有data license才可以。可以通过开启RTU license激活。开启RTU后正常. 2 操作方法 License种类如下:  ipbase ipbasek9 Permanent ipbasek9  security securityk9 Eva…

C++【new delete】【operator new operator delete】

目录 数据段存储位置的小复习 new 和 delete operator new 和 operator delete new和delete调用operator new和operator delete new [ ] 和 delete [ ]的原理 数据段存储位置的小复习 全局变量和静态变量都在静态区,也称数据段 全局变量int x 0 和 全局静态变…

全网最实用--神经网络各个组件以及效率指标 (含代码助理解,粘贴即用)

文章目录 一、神经网络相关组件0.前奏1.全连接层(Fully Connected Layer, FC)/密集层(Dense Layer):2.卷积层(Convolutional Layer, Conv):a.一维卷积b.二维卷积c.分组卷积 3.池化层(Pooling La…

JavaWeb系列二十三: web 应用常用功能(文件上传下载)

文件上传下载 基本介绍文件上传基本原理文件上传应用实例文件上传注意事项和细节 文件下载基本原理文件下载应用实例文件下载注意事项 ⬅️ 上一篇: JavaWeb系列二十二: 线程数据共享和安全(ThreadLocal) 🎉 欢迎来到 JavaWeb系列二十三: web 应用常用功能(文件上传…

数据结构:基础概念

一、相关概念 概念 相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构 集合:所有数据在同一个集合中,关系平等。 线性:数据和数据之间是一对一的关系 树: 一对多 图:多对多 物理结构(在内存当中的存储关系)…

堆的相关特点

一.建堆的两种方法 给定一个数组,其中数组里面的元素个数是n个如何能够把这个数组建立成为一个堆,今天探讨两种方法,分别是向上调整法和向下调整法,分别探讨他们的时间复杂度 向上调整法(以小堆为例) 回…

Spring系列-04-事件机制,监听器,模块/条件装配

事件机制&监听器 SpringFramework中设计的观察者模式-掌握 SpringFramework 中, 体现观察者模式的特性就是事件驱动和监听器。监听器充当订阅者, 监听特定的事件;事件源充当被观察的主题, 用来发布事件;IOC 容器本身也是事件广播器, 可以理解成观察…

create-vue源码学习之 gradient-string 渐变色打印

效果 在使用 create-vue 脚手架时,想实现如下的打印效果。 探究过程 翻到源码里看到这一行 没错,绿色部分就是告诉我们如何生成的。可以看到引入了 gradient-string 包 于是乎,我来试试 pnpm i gradient-string pnpm i --save-dev …

1.4、存储系统

目录 存储器的层次结构外存(辅存)内存CPU的寄存器Cache总结举例局部性原理 练习题 高速缓存Cache总结举例总结 练习题 Cache的地址映像方法直接相联映像全相联映像组相联映像练习题 Cache替换算法Cache页面淘汰算法Cache的读写过程练习题 磁盘总结固态硬…

人工智能(AI)在办公场所的广泛应用

人工智能(AI)在办公场所的广泛应用正逐步改变着我们的工作方式和效率。随着技术的进步,越来越多的公司和组织开始采用各种AI技术来优化工作流程、提升生产力,并提供更好的用户体验。以下是人工智能在办公方面的一些主要作用和影响…

Ecovadis评估的流程是什么

Ecovadis评估流程是一个全面、系统且注重细节的过程,旨在为企业提供关于其可持续性表现的深入洞察。这一评估不仅覆盖了企业在环境、社会和治理方面的多个方面,还强调了持续改进的重要性,确保企业能够不断提升其CSR(企业社会责任&…

社交圈子聊天交友系统搭建社交app开发:陌生交友发布动态圈子单聊打招呼群聊app介绍

系统概述 社交圈子部天交友系统是一个集成即时通讯、社区互动、用户管理等功能的在线社交平台。它支持用户创建个人资料,加入兴趣围子,通过文字、图片、语音、视频等多种方式进行交流,满足用户在不同场景下的社交需求 核心功能 -,…

Window系统下MySQL安装教程

1、MySQL各版本介绍 MySQL Community Edition MySQL Community Edition 是MySQL官方发布的免费版本,适用于个人用户和小型团队使用。它包含了基本的数据库功能,如创建表、插入数据、查询数据等。 MySQL Enterprise Edition MySQL Enterprise Edition 是…

【数据结构】AVL树(图文解析 + 代码实现)

目录 1、AVL树的概念 2、AVL树结点的定义 3、AVL树的插入 4、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 右左双旋 4.4 左右双旋 5、AVL树的验证 6、AVL树的性能 前面对map/multimap/set/multiset进行了简单的介绍,会大仙,这几个容器有个共同点是…

【AI大模型】程序员AI的未来——Copilot还是Claude3.5 Sonnet?

近期,Anthropic发布了Claude 3.5 的“大杯”模型 —— Claude 3.5 Sonnet! 这次发布的 Sonnet 代表意大利的“十四行诗”,结构复杂,在智能水平、功能多样性和处理能力上都有所提升,能够应对更复杂的认知任务&#xff…

解决VS2019+Qt联合开发双击Resource Files弹不出资源编辑器问题

目录 一、右键Resource.qrc文件 二、选择打开方式 三、鼠标选择Qt Resource Editor,并设置为默认值 四、最后点击确定,再次双击qrc文件,成功打开 最近在开发中,遇见一个问题,在VS联合Qt开发时,需要添加…

前后端分离项目部署,vue--nagix发布部署,.net--API发布部署。

目录 Nginx免安装部署文件包准备一、vue前端部署1、修改http.js2、npm run build 编译项目3、解压Nginx免安装,修改nginx.conf二、.net后端发布部署1、编辑appsetting.json,配置跨域请求2、配置WebApi,点击发布3、配置文件发布到那个文件夹4、配置发布相关选项5、点击保存,…

推荐一款基于 SpringBoot2 的后台管理系统脚手架,非常轻量简单(附源码)

前言 在现代软件开发中,后台管理系统是企业数字化转型的关键组成部分。然而,现有软件常常存在一些痛点,如复杂的权限管理、缺乏灵活的工作流配置、监控和日志功能不完善等。此外,许多系统study 成本高,依赖关系复杂&a…

VS2015加断点(红色),修改过后,断点变为白色不能命中

实际这个问题是因为:源文件和原始版本不同。解决方法有二: 一,在断点上右键,选择“位置”》勾选”允许源代码与原始版本不同; 二,点击菜单栏“调试”》“选项和设置”》“常规”》去掉“要求源文件与原始…