ObjectvieSQL简介
ObjectiveSQL 是一个Java ORM 框架,它不仅是Active Record 模式在Java 中的应用,同时还针对复杂SQL 编程提供近乎完美的解决方案,使得Java 代码与SQL 语句有机的结合,改变了传统SQL 的编程模型(以字符串拼接为主的编程模型)。
ObjectiveSQL 项目分为两部分:一部分是运行期Maven 依赖 objective-sql 或 objsql-springboot,主要实现了基础的ORM 特性和SQL 编程模型,另一部分是IntelliJ IDEA 插件,兼容Java 运算符重载和动态代码提示。
ObjectiveSQL 主要解决:
- 动态代码生成:基于领域模型(Domain Model),自动生成简单SQL 编程代码,使应用系统开发只关注自身的业务特性,提升开发效率;
- 可编程SQL:将SQL 中的控制原语、谓词、函数以及过程化逻辑等抽象为Java 中的高级类型,与Java 融为一体,使得SQL 成为真正过程化、逻辑型编程语言,可封装、可复用以及单元测试;
- 表达式语法一致性:Java 语法与SQL 语法等价替换,包括:数学计算、函数调用、比较与逻辑计算表达式,Java 表达式可以直接转换为SQL 表达式;
ObjectiveSQL特性
- 使用一个注释,您便Class具有SQL编程的全功能
- 简单的关系查询(has_one,has_many和belongs_to)和分页查询
- 使用Java语法编写SQL表达式(arithmetic,comparison和logical)
为什么要选择ObjectiveSQL
- 如果您的项目专注于基于关系数据库的数据分析,以及SQL语句中的许多算术表达式。ObjectiveSQL将帮助您使用Java语法方便且安全地编写表达式。
- 如果您不想编写数据库访问和各种配置文件的Java代码,ObjectiveSQL的动态代码生成将帮助您无需编码即可访问数据库
性能展示
![a919771b196e15b25c05ce67bbffdef1.png](https://img-blog.csdnimg.cn/img_convert/a919771b196e15b25c05ce67bbffdef1.png)
ObjectiveSQL使用例子
复杂的SQL编程
![755e10b38281d385212e6ae7157fa062.png](https://img-blog.csdnimg.cn/img_convert/755e10b38281d385212e6ae7157fa062.png)
如您所见,Java运算符可以转换为SQL运算符,这意味着您可以使用Java语法编写SQL。在Java中,可以进行SQL动态编程,逻辑等。
零编码的简单SQL编程
![13fc1680d4313c49491314c80b4ea04b.png](https://img-blog.csdnimg.cn/img_convert/13fc1680d4313c49491314c80b4ea04b.png)
持久化(Persistence)
![271e7cdc1951b18bd7af05326b25e74a.png](https://img-blog.csdnimg.cn/img_convert/271e7cdc1951b18bd7af05326b25e74a.png)
计数和查询(Counting and Quering)
![64df2e5e2b49422c0d449801c22aece3.png](https://img-blog.csdnimg.cn/img_convert/64df2e5e2b49422c0d449801c22aece3.png)
关联查询(Relation Quering)
![f81aa187552bc420366c67a0cd759d83.png](https://img-blog.csdnimg.cn/img_convert/f81aa187552bc420366c67a0cd759d83.png)
分页查询(Paged Quering)
![fa218ce462406f347e104e8091c261f3.png](https://img-blog.csdnimg.cn/img_convert/fa218ce462406f347e104e8091c261f3.png)
总结
看完这个ORM框架,让我想起了以前的JFINAL里的ORM,当然如何选择项目的ORM还是要依据项目具体情况具体分析,看项目里Model是贫血模型还是充血模型,是重关系数据库还是其他等等,不能简单的看纸面数据,因为你不深入补课,会在项目开发中碰到意想不到的问题,拖延进度。
因此,Myabtis、Hibernate、JPA和ObjectiveSQL等等,你会如何选择呢?