设计模式- 数据源架构模式

news2024/12/24 0:10:06

活动记录(Active Record

一个对象,它包装数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑

对象中既有数据又有行为。这些数据大多是持久数据、并且需要保存到数据库。

运行机制

  • 活动记录的本质是一个领域模型,这个领域模型中的类和基数据库中的记录结构十分吻合。每条活动记录负责和数据库进行交互,处理领域逻辑。
  • 某些面向数据的代码在活动记录中,而某些领域逻辑在事务脚本中。
  • 活动记录通常具有下列方法:
  1. 由SQL结果集中的一行构造一个活动记录实例
  2. 为将来对表的插入构造一个新的实例
  3. 用静态查找方法来包装常用的SQL查询和返回活动记录。
  4. 更新数据库并将活动记录中的数据插入数据库
  5. 获取或设置域
  6. 实现部分业务逻辑
  • 活动记录和行数据入口十分类似。二者的主要差别是:行数据入口仅有数据库访问而活动记录既有数据源逻辑又有领域逻辑。

使用时机

  • 适用于不太复杂的领域逻辑,如创建、读、更新和删除。
  • 活动记录容易创建易于理解,但问题在于仅当活动记录对象和数据库中表直接对应,即同构模式时,活动记录才比较有效。
  • 活动记录要求和数据库结构设计紧密耦合,为重构带来困难。

活动记录示例

建立类,及和类同构的表结构

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

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

相关文章

Iris for mac 好用的录屏软件

Iris 是一款高性能屏幕录像机,可录制到 h.264。Iris 在可用时利用板载 GPU 加速。它可以选择包括来自摄像头和最多两个麦克风的视频。 兼容性 所有功能在macOS 11.0-14上完全支持,包括macOS Sonoma。 简单编码 直接录制为h.264、h.265、ProRes或Motion…

WPF学习(10)-Label标签+TextBlock文字块+TextBox文本框+RichTextBox富文本框

Label标签 Label控件继承于ContentControl控件,它是一个文本标签,如果您想修改它的标签内容,请设置Content属性。我们曾提过ContentControl的Content属性是object类型,意味着Label的Content也是可以设置为任意的引用类型的。 案…

游戏ID统一管理器DEMO

一般游戏的角色ID、名字,工会ID、名字,等最好统一创建,方便合服处理,可以以此基础,动态配置生成ID 这个也可以用openresty 作个,可能更专业点, 1:go1.20 最后一版支持win7的 mongod…

微信小程序乡村医疗系统,源码、部署+讲解

目录 摘 要 Abstract 1 绪论 1.1 研究背景及意义 1.2 研究现状 1.3 研究内容 2 相关技术介绍 2.1 Java 语言 2.2 MySQL 数据库 2.3 Spring Boot 框架 2.4 B/S 结构 2.5 微信小程序 3 系统分析 3.1 可行性分析 3.1.1 经济可行性 3.1.2 技术可行性…

4.MySQL数据类型

目录 数据类型 ​编辑数值类型 tinyint类型 bit类型 float类型 decimal类型 字符串类型 char类型 varchar varchar和char的区别 日期和时间类型 数据类型 数值类型 说明一下:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时&#x…

【ThreadLocal总结】

文章目录 为什么使用ThreadLocalThreadLocal核心ThreadLocal内部结构ThreadLocal内存泄漏解决内存泄漏 为什么使用ThreadLocal 在并发编程中,多个线程同时访问和修改共享变量是一个常见的场景。这种情况下,可能会出现线程安全问题,即多个线程…

AWS生成式AI项目的全生命周期管理

随着人工智能技术的迅速发展,生成式 AI 已成为当今最具创新性和影响力的领域之一。生成式 AI 能够创建新的内容,如文本、图像、音频等,具有广泛的应用前景,如自然语言处理、计算机视觉、创意设计等。然而,构建一个成功…

【Python】pandas:计算,统计,比较

pandas是Python的扩展库(第三方库),为Python编程语言提供 高性能、易于使用的数据结构和数据分析工具。 pandas官方文档:User Guide — pandas 2.2.2 documentation 帮助:可使用help(...)查看函数说明文档&#xff0…

文本编辑器小型架构

C字体库开发之字体列表设计七-CSDN博客 创作不易,小小的支持一下吧!

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …

【数据结构】排序 —— 归并排序(mergeSort)、计数排序、基数排序

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构、LeetCode专栏 📚本系…

【数据结构】哈希应用-STL-位图

目录 1、位图的概念 2、位图的设计与实现 2.1 set 2.2 reset 2.3 test 3、C库中的位图 4、位图的优缺点 5、位图相关题目 1、位图的概念 面试题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这4…

【Material-UI】按钮组件中的实验性API:Loading按钮详解

文章目录 一、LoadingButton 组件概述1. 组件介绍2. 基本用法 二、LoadingButton 组件的高级用法1. 自定义加载指示器2. 图标与加载位置 三、已知问题与解决方法1. Chrome 翻译工具与 LoadingButton 的兼容性问题 四、实用性与未来展望1. 应用场景2. 未来展望 五、总结 Materia…

共享内存的原理及初识线程

char *str"hello world"; *str-H; 运行时报错,RWX只有R权限。 外设和内存交互以4KB为单位。 虚拟地址32位的划分为10 10 12 前10位对应页表的页目录。 在10位即为页表,页表中存放指定页框的起始物理地址虚拟地址的低12位作为页内偏移。 共…

RedLock算法分析

Redis分布式锁-RedLock算法 手写分布式锁的缺点 Redlock算法设计理念 Redis也提供了Redlock算法,用来实现基于多个实例的分布式锁。 锁变量由多个实例维护,即使有实例发生了故障,锁变量仍然是存在的,客户端还是可以完成锁操作。…

第一篇Linux介绍

目录 1、操作系统 2、Windows和Linux操作系统的区别 3、 Linux 的发行版本 4、 linux 分支 5、 Linux 的含义 6、Linux 特点 1、操作系统 常见操作系统有:Windows、MacOS、Unix/Linux。 类 UNIX Windows:其是微软公司研发的收费操作系统&#xff…

【漏洞复现】JBoss 中间件漏洞

JBoss介绍 JBoss是⼀个基于J2EE的开发源代码的应⽤服务器。JBoss代码遵循LGPL许可,可以在任何商业应⽤中免费使⽤。JBoss是⼀个管理EJB的容器和服务器,⽀持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核⼼服务不包括⽀持servlet/JSP的WEB容器,⼀般…

QTableView使用示例-Qt模型视图委托(MVD)(Model-View-Delegate)

模型视图委托(MVD)是Qt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基本相同。不同的是委托不是独立存在,而是包含在视图里面。 模型视图委托设计模式中&…

步进电机驱动调试问题

工作中,调试24-byj48步进电机遇到一个怪现象: 1. 偶现 2. 出现问题时其中一个马达反转无法驱动,正转正常。 排查思路: 1. 将两个电机交叉验证,发现始终跟M2接口有关。排除电机问题。 2. 检查电机IO口配置&#xf…

大数据项目——广告数仓之HTTP概述

目录 第一章、理解URL 1.1 客户端、服务器 1.1.1 服务器与服务 1.1.2 客户端 1.2 URL 1.3 查询参数 第一章、理解URL 1.1 客户端、服务器 1.1.1 服务器与服务 所谓服务器,其实就是一台24小时不关机的计算机,它也有自己的cpu、内存、网卡、…