如何选择适合的模型类型?

介绍

通过Oinone 7天从入门到精通模型的类型章节我们可以知道模型有抽象模型、存储模型、代理模型、传输模型这四种。但是在在定义模型的时候我们可能不知道该如何选择类型,下面结合业务场景为大家讲解几种模型的典型使用场景。

抽象模型

抽象模型往往是提供公共能力和字段的模型,它本身不会直接用于构建协议和基础设施(如表结构等)。

场景:都继承自动物这个抽象模型
package pro.shushi.pamirs.demo.api.model;

import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;
import pro.shushi.pamirs.meta.annotation.sys.Base;
import pro.shushi.pamirs.meta.base.IdModel;
import pro.shushi.pamirs.meta.enmu.ModelTypeEnum;

@Base
@Model.model(AbstractAnimal.MODEL_MODEL)
@Model.Advanced(type = ModelTypeEnum.ABSTRACT)
@Model(displayName = "动物")
public abstract class AbstractAnimal extends IdModel {

    public static final String MODEL_MODEL = "demo.AbstractAnimal";

    @Field.String
    @Field(displayName = "名称")
    private String name;

    @Field.String
    @Field(displayName = "颜色")
    private String color;
}
package pro.shushi.pamirs.demo.api.model;

import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;

@Model.model(Cat.MODEL_MODEL)
@Model(displayName = "猫")
public class Cat extends AbstractAnimal {

    private static final long serialVersionUID = -5104390780952634397L;

    public static final String MODEL_MODEL = "demo.Cat";

    @Field.Integer
    @Field(displayName = "尾巴长度")
    private Integer tailLength;

}
package pro.shushi.pamirs.demo.api.model;

import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;

@Model.model(Bird.MODEL_MODEL)
@Model(displayName = "鸟")
public class Bird extends AbstractAnimal {

    private static final long serialVersionUID = -5144390780952634397L;

    public static final String MODEL_MODEL = "demo.Bird";

    @Field.Integer
    @Field(displayName = "翼展宽度")
    private Integer wingSpanWidth;

}

存储模型

存储模型用于定义数据表结构和数据的增删改查(数据管理器)功能,是直接与连接器进行交互的数据容器。

场景:存储模型对应传统开发模式中的数据表,上面例子中的CatBirdd都属于传输模型,由于模型定义的注解@Model.Advanced(type = ModelTypeEnum.STORE)默认值就是存储模型,所以一般不用手动指定

代理模型

代理模型是用于代理存储模型的数据管理器能力,同时又可以扩展出非存储数据信息的交互功能的模型。

场景一:隔离数据权限
场景二:增强列表的搜索项
场景三:导入导出的时候增加其他特殊信息
场景四:重写下拉组件的查询逻辑做数据过滤

传输模型

传输模型不会在数据库生成的表,只是作为数据的传输使用,跟传统开发模式中的DTO有一点相似。

场景一:批量处理数据
场景二:处理一些跟数据表无关的操作,如:清理指定业务的缓存、查看一些系统监控信息,可以根据业务信息建立对应的传输模型,在传输模型上创建action动作
场景三:通过传输模型完成复杂页面数据传输

Oinone社区 作者:nation原创文章,如若转载,请注明出处:https://doc.oinone.top/backend/6575.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(2)
nation的头像nation数式员工
上一篇 2024年4月6日 下午3:19
下一篇 2024年4月8日 下午10:15

相关推荐

发表回复

登录后才能评论