anyline是什么,从另一个角度看anyline
anyline是什么,简单来说是一个数据库操作工具,可以对比ORM来了解anyline
相对于ORM,anyline更注重的是动态、运行时、元数据、结果集操作。所以有时也称D-ORM(动态ORM)
动态就是非静态,最常见的如动态数据源,这个数据源地址甚至数据库类型在编码环节都不可知,也不是固定在配置文件中,
而是在系统已经部署完成在运行时由用户随时提供,也可能随时修改。特别是在数据中台环境中经常会遇到。
在动态环境中,很难有在编码环境就已知的实体类以及属性,甚至是属性类型都一无所知。比如低代码场景,我们连用户的业务场景都不清楚。
这时我们能操作的只有元数据,通过对元数据的操作来帮助用户实现对业务数据的设计与操作。
在已知的数百个数据库中,元数据虽然大同小异,但细节又千差万别。可以对比一下hibernate方言兼容的概念,不同的是anylines 面向的是元数据,是要自动识别切换方言。
动态设计数据库
动态查询
与传统ORM最大的区别在于anyline统一了简化了O却增强了这个唯一的O,因为是动态数据,所以需要一个能承接动态结果集的数据结构,这里说的主要是DataRow/DataSet,是一个类似List<Map>的结构
但List<Map>虽然足够抽象,但对实际业务的支持还远远不够,所以在我们的项目中才会出现大量的for,if,else以及stream
简单举个例子:
1.在低代码环境中,我们需要的不仅仅是一个结果数据,更需要数据背后的更多属性,如数据类型,长度,约束,备注等
2.要计算出每组学生的每个学科的平均成绩,这个过程中可能会涉及未参加考试的以及最高分最低分的问题,想想要有多少for if else,维护过程要费多少精力。
3数据加载到内存后,要根据一些条件过滤一下,而这个条件又是运行时用户提供的,
结果集的操作看似最不值得一提,却是对工作量和效率影响最大的一个环节,面向对象不仅仅是一个简单的get/set组合,而是需要一个自带元数据信息以及各种数据计算,格式转换的结构
anyline-office