首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ActiveRecord模式与Domain Object或Data Mapper模式有何不同?

ActiveRecord模式和Domain Object模式是两种不同的对象关系映射(ORM)风格。它们在处理实体关系映射、代码组织和开发效率等方面有所不同。

ActiveRecord模式:

  1. 是将数据库表映射为对象模型的编程范式。ORM库将表属性与对象相应属性对应,将表关联关系与对象中方法对应。
  2. 在ActiveRecord模式中,数据实体模型与数据库表直接对应,表中的每一行数据都被视为一个对象。因此可以方便地执行CRUD(创建、读取、更新和删除)操作。
  3. 优点是支持事务,提高了开发效率,简化了代码结构。例如,当需要执行多个表操作时,可以通过操作一个总的数据对象来完成。
  4. 缺点是过度关注数据库表结构,导致与业务无关的操作过多。而且,当表结构发生更改时,涉及实体对象的代码可能需要更改。

Domain Object模式:

  1. 是将业务逻辑和规则封装在业务实体对象中的编程范式,将数据库模型与实际业务实体解耦,专注于实现业务逻辑,而无需关注底层数据库模型。
  2. 在Domain Object模式中,每个业务实体对象都表示现实世界中的一个实体,具有独立的状态和行为。它们通常有自己的生命周期和相关操作。
  3. 优点是可以实现领域模型关注领域规则,例如在订单系统中,订单可能是实体对象,订单中的商品可以是另一个实体对象,订单的状态变化可以根据业务逻辑进行调整,而不是依据数据库表结构调整。
  4. 缺点是可能导致实体对象数量过多,因为现实世界中的一个实体可能对应多个数据库表,这可能使得代码更复杂,难以保持清晰的设计。

推荐腾讯云产品:

  1. 腾讯云MySQL 产品链接:https://cloud.tencent.com/product/mysql 腾讯云MySQL提供高可用的基础架构、丰富的查询优化器以及多级缓存机制,帮助开发者轻松解决高并发、大数据量的数据库应用场景。
  2. 腾讯云Redis 产品链接:https://cloud.tencent.com/product/redis Redis作为一个高性能的键值存储,为开发者在云端提供高性能、易用、安全的数据存储解决方案。
  3. 腾讯云Elasticsearch 产品链接:https://cloud.tencent.com/product/elasticsearch Elasticsearch可以快速地为开发者提供强大的搜索和数据查询功能,实现对结构化和非结构化数据的高效处理。

这些云计算产品在底层都可以使用腾讯自研的分布式数据库Tendis,其支持高可用、高可靠、高并发、高性能和低成本的存储能力,为开发者提供稳定可靠的数据存储服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

小书MybatisPlus第5篇-Active Record模式精讲

如果遇到更加复杂的领域模型结构(例如用到继承、策略的领域模型),往往需要使用分离数据源的领域模型,结合 Data Mapper (数据映射器)使用。...具体到使用层面,我们之前章节讲过使用Data Mapper 做数据的持久层操作。...模式 现在我们使用ActiveRecord模式,用法如下,注意二者的区别 User user = new User(); user.setName("zimug"); user.setAge(18);...user.insert(); //ActiveRecord模式 一、使ActiveRecord模式生效 首先:需要让数据库表对应的数据持久层实体类。...public interface UserMapper extends BaseMapper { } 这样Mybatis Plus的ActiveRecord模式就生效了,默认的帮我们实现了如下的一些数据持久层方法

79720

基于SpringBoot AOP面向切面编程实现Redis分布式锁

如果遇到更加复杂的领域模型结构(例如用到继承、策略的领域模型),往往需要使用分离数据源的领域模型,结合 Data Mapper (数据映射器)使用。...具体到使用层面,我们之前章节讲过使用Data Mapper 做数据的持久层操作。...模式 现在我们使用ActiveRecord模式,用法如下,注意二者的区别 User user = new User(); user.setName("zimug"); user.setAge(18);...user.insert(); //ActiveRecord模式 一、使ActiveRecord模式生效 首先:需要让数据库表对应的数据持久层实体类。...public interface UserMapper extends BaseMapper { } 这样Mybatis Plus的ActiveRecord模式就生效了,默认的帮我们实现了如下的一些数据持久层方法

66620
  • mybatisplus+swagger【后端专题】

    模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere...使用 简介: 讲解什么是ActiveRecord和使用 什么是ActiveRecord(只做简单了解即可) Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表...ActiveRecord虽然业务逻辑, 但基本上都是基于单表的. 跨表逻辑一般会放到当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script)中....但是ActiveRecord有数据库访问能力, 所以所以分布式或者大型项目基本不用 POJO: model/domain/dto/vo/bo/do 第5集 数据库高并发更新必备技能之乐观锁 简介:...OpenAPI文档三个必需的部分对象,也可以增加其他模块: ​ 1. openapi - OpenAPI规范版本的语义版本号 ​ 2. info - 有关API的元数据 ​ 3. paths - API

    2.1K30

    springboot第27集:springboot-mvc,WxPay

    如果映射器XML文件中缺少SQL语句命名不同,您需要相应地添加修改它。确保语句具有正确的语法,并与您的数据库模式匹配。 保存更改,如果需要重新构建应用程序,并重试触发错误的操作。...VO 和 Domain 在设计模式中属于不同的概念,它们的职责和作用也不同。...在实际开发中,为了解耦和模块化,常常会使用 DTO (Data Transfer Object) 对象在不同层之间传输数据。...总结: VO (View Object) 是用于前端数据展示的对象,通常只包含前端交互所需的属性。 Domain (领域对象) 是用于表示业务领域中的核心业务对象,包含业务逻辑和数据操作。...DTO (Data Transfer Object) 可以在不同层之间传输数据,可以根据具体需求从 Domain 对象中抽取部分属性,并添加一些额外属性。

    18820

    mybatis-plus思维导图,让mybatis-plus不再难懂

    MyBatis 可以使用简单的 XML 注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。...[回顾mybatis的特点.png] 但mybatis个让我比较头疼的一个问题是sql工作量很大,尤其是字段多的时候。...特性 [image.png] 从上图可以看出,mybatis-plus不仅仅封装了基本的CRUD操作,还内置了防SQL注入操作、常用的分页插件,还有我最喜欢的ActiveRecord模式。...用过jfinal的人应该都知道ActiveRecord是啥。Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射。...[MP增删改查.png] 相比两种写法,我更喜欢ActiveRecord模式写法,因为我不用注入userMapper,new了一个对象之后直接调用方法操作就行了。

    3.9K180

    【Spring】SpringBoot整合MybatisPlus的基本应用

    Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 ActiveRecord...模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere...characterEncoding=utf-8&useSSL=false username: root password: 2020 6.创建实体User的类 在domain目录下创建...@Data public class User { //设定id自增 @TableId(type = IdType.AUTO) private Integer id; private...String name; private Integer age; private String email; } 7.添加mappermapper目录下创建UserMapper。

    62310

    mybatis-plus的使用 ------ 进阶

    一、ActiveRecord: Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。...ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索...2、mapper: public interface UserDao extends BaseMapper { } 注:虽然AR模式用不到该接口,但是一定要定义,否则使用AR时会报空指针异常...,其实用法MP的BaseMapper提供的方法的用法差不多,只不过这里是实体对象调用。...AR的分页方法BaseMapper提供的分页方法不同的是,BaseMapper的selectPage方法返回值是查询到的记录的list集合,而AR的selectPage方法返回的是page对象,该page

    2.5K70

    大型项目如何选择ORM:Active Record 还是 Data Mappers

    ORM(Object Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,简单点说就是将数据库里面的一条数据映射成一个对象,要对某条数据增删改查时直接操作对应的对象即可...ActiveRecord 从面向对象的角度来说,将数据操作数据持久化两个功能放一起违反了单一功能原则。回顾一下什么是单一功能原则?每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。...Data Mappers 从面向对象的角度来说,将数据操作数据持久化两个功能分开符合单一功能原则。这样设计出来的代码低耦合,扩展性强,性能有保证。...一般项目初期会选择ActiveRecord,如果项目比较成功,一天发现ActiveRecord优化起来很吃力,要改造它的时候想到Data Mappers,然后从ActiveRecord过度到Data...参考文档 https://www.thoughtfulcode.com/orm-active-record-vs-data-mapper/

    2.2K50

    mybatis-plus思维导图,让mybatis-plus不再难懂

    MyBatis 可以使用简单的 XML 注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 ?...但mybatis个让我比较头疼的一个问题是sql工作量很大,尤其是字段多的时候。...3 特性 从上图可以看出,mybatis-plus不仅仅封装了基本的CRUD操作,还内置了防SQL注入操作、常用的分页插件,还有我最喜欢的ActiveRecord模式。...用过jfinal的人应该都知道ActiveRecord是啥。Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射。...相比两种写法,我更喜欢ActiveRecord模式写法,因为我不用注入userMapper,new了一个对象之后直接调用方法操作就行了。

    1.6K80

    【快学springboot】SpringBoot整合Mybatis Plus

    Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题 支持 ActiveRecord...模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere...mybatis-plus常用 下面列出一些mybatis-plus中常用的东西: 1、指定实体类对应的数据库表名 @TableName(value = "user") 在实体类数据库表明不是对应的情况下使用...() { return new PaginationInterceptor(); } 分页示例: 总结 这里演示了springboot快速使用mybatis-plus,mybatis-plus非常丰富的用法...兴趣的朋友,可以直接到官方文档里查看。

    23910

    MybatisPlus

    对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的...user = " + user); } } } SQL注入的原理 前面我们已经知道,MP在启动后会将BaseMapper中的一系列的方法注册到meppedStatements中,那么究竟是如 注入的呢...什么是ActiveRecordActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记 录映射到对象,字段映射到对象属性。...,在ActiveRecord中封装了对数据库的访问,即CURD;; ActiveRecord 是一种领域模型(Domain Model),封装了部分业务逻辑; 开启AR之旅 在MP中,开启AR非常简单,...功能: Java XML 调回跳转 Mapper 方法自动生成 XML

    54910
    领券