普元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有什么优秀的特性,我以后慢慢再完善吧,大家现有一个大概的印象即可。