当前位置: 首页 > news >正文

普元EOS-数据实体、SDO接口和实现类、DataObject都是什么?

1 前言

各位同学一定对ORM概念不陌生,一般使用的MyBatis和Hibernate都是非常优秀的ORM框架。

在ORM框架中,有个很好的概念就是将数据表与Java Bean对应起来,从而实现操作Java对象就实现了对数据库的操作。

在普元EOS中也提供了ORM的工具,并且是可视化的。

2 数据实体是什么样的?

在普元EOS的高开和低开IDE中,都提供了从数据表直接生成数据实体的功能。

本文以EOS高开IDE中,从一个数据表创建数据实体的操作,从而形象化数据实体。

2.1 在EOS高开IDE的Database connection中创建数据库连接

关于Database connection中创建数据库连接的具体方法,可以见我的文章《普元EOS学习笔记-高低开结合方式实现图书的增删改查》。

数据库连接创建后,可以看到数据库下的数据表。

2.2 创建EOS的数据集 Dataset

EOS的数据集感觉是一个容器的概念。

是用来承载数据实体的容器。

样子看起来是下图这样子

建议在项目的model构件中创建数据集。

2.3 拖拽数据表到结果集的窗口,创建数据实体

从下图可以看到,从Database connection中找到数据表,拖拽到数据集的窗口,就创建出数据实体了。

2.4 数据集和数据实体的格式

EOS数据集和数据实体,在存储上看,都是xml文件。

下图是其中的一部分xml代码。

3 SDO接口和实现类

SDO接口就是一个普通Java接口(interface)。哦,也不普通,它一定是继承自DataObject的

SDO实现类是一个Java类,实现了SDO接口。

在EOS开发中,操作数据都是基于数据实体的,高低开都是存在数据实体的,从数据实体可以生成SDO接口和实现类。

因此,EOS开发中想要操作一个数据表的数据,先要创建数据实体。但不一定非要生成SDO接口和实现类。

在普元EOS的IDE中,找到数据实体,右键,找到创建SDO代码,就会自动生成对应的SDO接口和SDO实现类。

从文件夹结构上,数据集和SDO的关系看起来是下面这样的

UserDataset.datasetx :是一个xml文件,记录了数据集和数据实体。在其中我创建了一个TUserDevops的数据实体,这个TUserDevops数据实体是从数据表 t_user_devops生成的。

TUserDevops接口: 是一个Java接口,这是我基于 TUserDevops数据实体类生成的,继承自 DataObject。这个DataObject是EOS提供的一个接口。 commonj.sdo.DataObject 接口。

TUserDevopsImpl实现类: 也是一个Java类,具体的不多说了。

在EOS高开的时候,各种数据库的操作都是基于EOS提供的系列数据库操作类实现的,比如:

com.eos.foundation.database.DatabaseUtilcom.eos.spring.dao.DatabaseDaocom.primeton.spring.support.DatabaseExt

这些类都是基于数据实体、SDO接口和实现类来进行数据操作的。

4 DataObject

这个DataObject完整的写法是 

commonj.sdo.DataObject

这是EOS内置的一个接口,所有数据ORM都是基于该接口实现的。

比如在MyBatis中数据表实体类,就是一个普通的Java类,不需要继承什么类或实现什么接口。

Hibernate的实体类,也不需要特别设计,就是一个普通Java类。

普元的数据实体是需要继承自DataObject的。

至于DataObject有什么优秀的特性,我以后慢慢再完善吧,大家现有一个大概的印象即可。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 迁移学习代码复现
  • 详讲C#中如何存储当前项目的设置-超级简单省事
  • CSS详知识点——CSS变形
  • 设计模式 - 创建者模式(第四章)
  • MySQL列表分区分区表
  • 什么是零拷贝?以及数据在内存中的流动途径
  • 十三、OpenCVSharp的目标检测
  • 「入选文章」腾讯云AI代码助手 | AI助力,从零基础开发一个vscode插件
  • NGINX 之 location 匹配优先级
  • cdr工具介绍之刻刀工具
  • 重磅!RISC-V+OpenHarmony平板电脑发布
  • MySQL——高级查询(3)分组查询
  • 敲桌子游戏
  • Java OkHttp使用(二)
  • Java数组05:Arrays类
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【前端学习】-粗谈选择器
  • 30秒的PHP代码片段(1)数组 - Array
  •  D - 粉碎叛乱F - 其他起义
  • egg(89)--egg之redis的发布和订阅
  • express.js的介绍及使用
  • golang 发送GET和POST示例
  • gops —— Go 程序诊断分析工具
  • Hexo+码云+git快速搭建免费的静态Blog
  • MySQL用户中的%到底包不包括localhost?
  • python_bomb----数据类型总结
  • Rancher-k8s加速安装文档
  • Vim 折腾记
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 基于web的全景—— Pannellum小试
  • 经典排序算法及其 Java 实现
  • 聚类分析——Kmeans
  • 前端学习笔记之观察者模式
  • 正则与JS中的正则
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 数据库巡检项
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #70结构体案例1(导师,学生,成绩)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (LeetCode) T14. Longest Common Prefix
  • (python)数据结构---字典
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (算法)Travel Information Center
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)linux 命令大全
  • (转)Windows2003安全设置/维护