首页
学习
活动
专区
圈层
工具
发布

Active Record基础

Active Record 是MVC中的M,负责处理数据和业务逻辑,Active Record实现了Active Record模式,是一种 对象关系映射 系统 Active Record 模式: 在 Active...Record 模式: 中,对象中既有持久存储的数据,也有针对数据的操作,Active Record 模式把数据存取逻辑作为对象的一部分,处理对象的用户知道如何读写数据。...对象关系映射: ORM是一种技术手段,把应用中的对象和关系型数据库中的数据表连接起来,使用ORM,应用中对象的属性和对象之间的关系可以通过一种简单额方法从数据库中获取,无需直接编写SQL语句,也不过度依赖特定的数据库种类...Active Record重要的功能有: 表示模型和其中的数据 表示模型之间的关系 通过相关联的模型表示继承层次结构 持久存入数据之前,验证模型 以面向对象的形式操作数据库...,Active Record 可以验证模型,已检查属性值是否不为,是否唯一等。

4.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Nest.js 实践总结分享

    为什么我们需要前缀?好的 API 在设计时要考虑到向后的兼容性。当增强或增加一个 API 时,我们应该确保已经线上使用到该 API 的业务不受影响。简而言之,API 前缀是为了向后兼容。 2....此外,如果你不遵守此原则,Nest.js 可能会在构建过程中崩溃。 3. 使用 DTOs DTO = 数据传输对象。Dtos 就像接口,目标是传输数据并验证它,主要用于路由器 / 控制器。...应该使用 Data Mapper/Repository 模式,而不是 Active Record 如果你正在使用 PostgreSQL 或 MySQL 等关系数据库,那么请使用 TypeOrm,它是 Typescript...使用 Active Record 方法,可以在模型本身内定义所有查询方法,并使用模型方法保存、删除和加载对象。...下面是使用 Active Record 模式的样子: const user = new UserEntity(); user.name = "Vladimir"; user.job = "programmer

    2.3K10

    Nest.js 实践总结

    为什么我们需要前缀?好的 API 在设计时要考虑到向后的兼容性。当增强或增加一个 API 时,我们应该确保已经线上使用到该 API 的业务不受影响。简而言之,API 前缀是为了向后兼容。 2....此外,如果你不遵守此原则,Nest.js 可能会在构建过程中崩溃。 3. 使用 DTOs DTO = 数据传输对象。Dtos 就像接口,目标是传输数据并验证它,主要用于路由器 / 控制器。...应该使用 Data Mapper/Repository 模式,而不是 Active Record 如果你正在使用 PostgreSQL 或 MySQL 等关系数据库,那么请使用 TypeOrm,它是 Typescript...使用 Active Record 方法,可以在模型本身内定义所有查询方法,并使用模型方法保存、删除和加载对象。...下面是使用 Active Record 模式的样子: const user = new UserEntity(); user.name = "Vladimir"; user.job = "programmer

    2.1K20

    ActiveRecord入门教程:Ruby的ORM神器

    ActiveRecord是Ruby on Rails框架的核心组件之一,它实现了"Active Record模式"(一种著名的设计模式)。...在ActiveRecord的世界里:- 数据库表 → Ruby类- 表中的一行 → 类的一个实例- 表中的列 → 实例的属性这种映射关系让我们能够用面向对象的方式来思考和操作数据,而不必直接处理SQL查询...为什么要学ActiveRecord?...rubygem install mysql2 # MySQL适配器gem install pg # PostgreSQL适配器配置数据库连接首先需要建立与数据库的连接:```rubyrequire 'active_record'ActiveRecord...(直接删除,不触发回调)User.delete(1)批量删除User.where(active: false).destroy_all```模型关联关系ActiveRecord最强大的特性之一就是处理表之间的关联关系

    15010

    orm 系列 之 Eloquent演化历程1

    Eloquent Eloquent是laravel中的orm,采取的是active record的设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用的时候可能没有探究eloquent...是怎么设计的,active record这种模式的优缺点等问题,下面我会带领大家从头开始看看Eloquent是如何设计并实现的。...note:此处版本是54d73c6,通过 git co 54d73c6 可以查看 model引入 接着我们继续演化,要引进Model,要实现Active Record模式,在46966ec中首次加入了...此时关系处理上主要的逻辑是调用Model的HasOne等表关系的方法,返回Relation的子类,然后通过Relation来处理进而返回数据,这么说可能有点绕,我们下面具体介绍下每个关系的实现,大家可能就理解了...Users,需要加载Phones的,如果不采用eager,在每个sql就是where user_id=?

    1.4K30

    DIY.JS 开发文档, 一款专用于DIY定制的Canvas图形库

    在用于管理图形对象、处理用户交互、渲染图形以及控制动画等 on 新增舞台指定事件的事件监听器。...enableMultiActive(): void; disableMultiActive 禁止图形多选 disableMultiActive(): void; getIndex 获取指定图形对象在舞台中的索引...激活指定的图形对象 active(shape: object): void; shape,要激活的图形对象 clear 清除舞台中的所有的素材 clear(): void; getModelShapes...getIndex 获取图形在舞台中的索引 getIndex(): number; 返回图形在舞台中的索引值 ColorBound 获取图形的非透明区域边界 ColorBound(): { x: number...CanvasRenderingContext2D对象 moveIndex 移动图形在舞台中的索引 moveIndex(target: number, action: boolean): number;

    76510

    MySQL 案例:Update 死锁详解

    锁保证了数据库在并发的场景下数据的一致性,同时锁冲突也是影响数据库性能的因素之一。而锁冲突中,有一类很经典的场景经常会拿出来讨论:死锁。...用户针对这个死锁的问题,提出了疑问:数据更新的并不是同一行,使用的也是不同的索引,为什么会发生死锁?...MySQL 不触发死锁回滚,且未进入 lockwait_timeout 的时候,具备这个条件。 不剥夺条件:已获得的资源,在末使用完之前,不能强行剥夺。 MySQL 的锁机制天然具备这个条件。...用户提出的疑问:使用的也是不同的索引,为什么会发送死锁?实际上二级索引上的记录锁,最终也会加到主键上。...所以只需要定位到具体锁的数据,找到循环等待的逻辑关系,就可以完成整个案例分析了。

    15.8K174

    Active Record 数据验证

    数据验证概览 为什么要做数据验证 数据验证确保只有有效的数据才能存入数据库,在模型中做验证是最有保障的,只有通过验证的数据才能存入数据库。...数据验证的方式主要有数据库原生约束、客户端验证和控制器层验证: 数据库约束无法兼容多种数据库,难以测试和维护,但是如果其他应用也要使用这个数据库,最好能够在数据库层做一些约束。...客户端验证可靠性不高,但是和其他验证方式结合可以提供实时反馈 控制器层验证不灵便,难以测试和维护,只要可能就应该保证控制器的代码简洁,这样才有利于长远发展 Active Record 对象分为两种...方法判断是否存入数据库,未存入则返回 true ,存入则返回 false ?...新建并保存会执行 SQL INSERT 操作,更新记录会执行 SQL UPDATE 操作,一般情况下,数据验证发生在执行这些SQL语句之前,如果验证失败,对象会被标记为无效, Active Record

    1.8K20

    实战分享 | 你知道这个死锁是怎么产生的吗?

    用户针对这个死锁的问题,提出了疑问:数据更新的并不是同一行,使用的也是不同的索引,为什么会发生死锁?...MySQL 不触发死锁回滚,且未进入 lockwait_timeout 的时候,具备这个条件。 3. 不剥夺条件:已获得的资源,在末使用完之前,不能强行剥夺。...用户提出的疑问:使用的也是不同的索引,为什么会发送死锁?实际上二级索引上的记录锁,最终也会加到主键上。...所以只需要定位到具体锁的数据,找到循环等待的逻辑关系,就可以完成整个案例分析了。...目前专栏文章仍在持续丰富中,欢迎在文章末尾留言互动,给出宝贵的建议。 ? 手机运维小程序限时免费体验!

    73550

    4. Jetpack源码解析—LiveData的使用及工作原理

    Jetpack源码解析—Navigation为什么切换Fragment会重绘? 3. Jetpack源码解析—用Lifecycles管理生命周期 2....例如,后台Activity在返回到前台后立即收到最新数据。 6. 正确应对配置更改 如果一个Activity或Fragment由于配置更改(如设备旋转)而重新创建,它会立即收到最新的可用数据。...Demo中通过对一个LiveData对象进行生命周期的监听,实现将值打印在控制台中。...onStart()日志,因为我们将liveData的值和Fragment的生命周期进行了绑定,当返回桌面或者销毁Fragment的时候,LiveData的值会变成相应的生命周期函数,并打印在控制台中:...同时LiveData只会在LifecycleOwner处于Active的状态下通知数据改变,果数据改变发生在非 active 状态,数据会变化,但是不发送通知,等 owner 回到 active 的状态下

    1.3K20

    混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

    两种操作模式 这里简单说明一下,ORM 架构模式中,最流行的实现模式有两种:Active Record 和 Data Mapper。...比如 Ruby 的 ORM 采取了 Active Record 的模式是这样的: $user = new User; $user->username = 'philipbrown'; $user->save...Active Record 中,领域对象有一个 save() 方法,领域对象通常会继承一个 ActiveRecord 的基类来实现。...不同于现有的所有其他 JavaScript ORM 框架,TypeORM 支持 Active Record 和 Data Mapper 模式(在我这次写的项目中,使用的是 Active Record...参考文章 ORM 实例教程:阮一峰教程,解释 ORM,通俗易懂 架构模式中的 Active Record 和 Data Mapper 什么是 ActiveRecord 模式 typeorm数据库ORM框架中文文档

    3.8K20

    重做日志和日志挖掘

    写入数据块缓冲之前,先写入redo log buffer –内存 写入数据文件之前先写入日志文件 –数据文件 当提交后,redo log buffer被刷入redo log files 关于v$log视图 vlog从控制文件中显示日志文件的信息...这是为什么呢?原来是后台归档进程ARCn将active redo log file归档成归档日志文件,相应的状态就由active变成了inactive。此时group1就不再用于实例恢复了。...Oracle数据库允许多路复用重做日志,也就是说,重做日志的两个或多个相同的拷贝可以自动保持在不同的地点。为了最大效益,存储的位置应在分开的磁盘。...为什么Oracle不用时间来界定呢? 我在北京时间8:00的时候执行一条DML语句,然后修改机器上的时间为7:00,再执行一条DML语句。...Redo record 一个redo record记录包括 Redo记录台 一个或多个改变向量 每个redo record包含每个原子改变的undo和redo 某些改动不需要undo(临时表,直接加载

    1.5K31

    【Laravel系列4.3】模型Eloquent ORM的使用(一)

    而在 Yii 中使用的是 Active Record 这种类型的领域模型模式,在 Yii 中甚至这个组件的名称就直接是 AR 。...Active Record 中文的意思是活动记录,特点是一个模型类对应数据库中的一个表。...其实,Laravel 中的 Eloquent ORM 也是 Active Record 的实现,这也是现在 ORM 的主流。...这样看貌似没问题呀,可是为什么报错的是 m_tests 表不存在呢?这就牵涉到上面 Active Record 的概念了,在 AR 中,一个类对应的是一张表,而一张表是由多行数据组成的。...这个其实和数据库的关联操作是有关系的。在标准的数据库结构中,我们是有主外键的概念的,但是,说实话,在 MySQL 中使用主外键的情况还真的是非常少。

    10.2K20

    Rust Web 生态观察| SeaORM :要做 Rust 版本的 ActiveRecord

    “Active Record ,是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。...Active Record使用最明显的方法,将数据访问逻辑放在域对象中。这样,所有人都知道如何在数据库中读取和写入数据。...DataMapper: 与Active Record不一样的地方在于它增加了一个映射器,把持久化对象的数据跟行为分开了。它的关键地方在于数据模型遵循了单一职责原则。...SeaORM : 要做 Rust 版本的 Active Record 既然 sea-orm 喊出这样的口号,那它的架构设计肯定和 Active Record 是有点关系吧?...Some(super::cake_filling::Relation::Cake.def().rev()) } } // 熟悉的行为 // 为什么不直接由框架实现?

    12.1K20
    领券