IRdbCore 简介¶
引言¶
在Java网络编程领域, Spring JPA,MyBatis,Herbinate 等一系列的数据库管理框架令我们耳目一新。通过简单的定义Bean,定义 Repositry, 定义数据库如何连接,就可以完成对数据库,数据库表,以及数据库操作的管理,甚为省事。
而在C++ 编程领域,我们想连接一个数据库,需要自己手动实现这一系列的操作,操作之繁琐,让人望而生畏。而 IRdbCore则是为了解决这个问题而提出的。
IRdbCore 通过 IWebCore封装提供的反射封装,可以完美的完成对于Bean的封装,可以很轻易的将数据库查询结果转换为C++类型,可以将C++类型与 JSON 类型相互转换。可以通过继承 IRdbTableModelInterface基类来继承基类中的数据库的增删改查。可以通过数据库基类以及Dialect(不同数据库使用不同的 SQL 方言) 来轻松实现很多不同类型数据库的连接。可以通过内置工具类来实现数据查询之后的解析操作等一系列的内容来提高用户编码效率。
特性¶
- 支持对象关系映射
通过对C++类进行注解 将 C++对象和数据库表进行映射, 实现对象与关系型数据库的相互映射。
- 持久化上下文, 简化的数据访问层
IRdbCore 提供了持久化上下文的概念,负责管理实体的生命周期, 实现增加, 删除,修改,查找等一系列的操作,开发者可以通过相关接口而不是显式的编写实现代码来执行数据库操作。
- 支持分页,排序,聚合,和条件查询等操作。
IRdbCore 内建支持分页,排序,聚合和条件查询,简化查询的编写。
- 易于扩展
允许用户手动编写Sql 语句,实现用户自己想要的数据库操作。
- 多数据库支持
IRdbCore 内置支持Sqlite, MySql, MariaDb, SqlServer, PostgreSql等一系列的数据库类型。用户也可以通过内置接口自由扩展出更多的数据库支持。
- 跨平台支持。
任何支持Qt运行的平台均可以支持该框架, 包含但不限于Linux, Windows, Mac, Android 等平台的操作。
- 方便的工具类进行查询转换
IRdbCore 提供相关的工具类将查询结果过一步转换成用户需要的数据类型
- 使用 异常和 Optional 返回值进行异常管理。
对于数据库的各种异常和用户的不当操作,框架会抛出异常;对于用户希望有数据,但是实际未查询到的数据,会返回 Optional
- 方便的与其他框架进行集成
IRdbCore可以方便的与其他的框架如 IHttpCore, ICmdCore 无缝集成,提供数据库操作的能力。
- 运行前期的逻辑检查功能
IRdbCore会在最开始程序运行的时候,检查诸如实体的定义,数据库是否存在,可连接等一系列逻辑条件。减少执行中的错误。
补充¶
- 为什么我们不用
IOrmCore作为名称
之前是使用 IOrmCore作为名称,Orm的意思是 *Object-Relational Mapping* 是对象关系映射,我们之后还会有非关系型数据库的功能,如 *IRedisCore*, *IMongoDbCore,* 等一系列的功能, 所以我们为了对等的原则, 我们将名称改为 *IRdbCore*. IRdbCore表示这个库将会管理所有的关系型数据。
- 关于更多的信息,请参考后面的文档。