开发者社区> 问答> 正文

分析一下Java ORM 框架的原理,大家怎么看?

Java 的ORM 框架发展了很多年,一直存在各种各样的问题,相信大家的体会比我还要深,到底这是什么什么呢?我从两个角度来分析一下,大家看看对不对?

1)语义表达的双重性

一个Java Bean 的定义,只能表达一种语义,就是与其它相关的Java 类相互协作实现一项特性,通常用于数据的载体,但不能表达数据库交互时的SQL 的语义,两种内存的语义差异很大(例如:Java Field 在数据库中映射为Column,一个Column 可以进行排序、算术运算、比较运算等),很难通过Annotation 进行描述,除非Java 中增加新的特性,用于描述一个Java Class 的多重语义。既然一个Java Class 无法满足双重语义的描述,只能新增代码进行定义和描述,此时又出现重复代码和变更的一致性,通过Maven 或APT 形式生成,也会存在每次变更后,都需要重新运行任务,才能正常使用,使的开发过程变得更糟。

2)语法一致性

Java 语法与SQL 语法从语义上说基本是一致的,但表现形式不一样,例如:Java 中逻辑表达式:a && b或者a || b,而SQL 中则是a AND b或者a OR c,两种类型表达语义上一致,但语法上不能直接互换。同时,也无法Java 对语义的解析和执行过程进行干预,也就导致了Java 的表达式无法直接转换为SQL 表达式,只能以字符串的形式进行拼接,通过对字符串拼接过程进行抽象和封装,形成一系列API,这也就导致了简单的表达式变成若干Java 方法的嵌套,严重影响了代码的可理解性。

ObjectiveSQL 完美的解决了上述两个问题,通过Java 代码的动态生成和Java 运算符重载等特性,有兴趣的同学可以发起挑战:

https://github.com/braisdom/ObjectiveSql

展开
收起
游客5lbwjhdfszw6y 2020-12-15 12:50:47 1315 0
1 条回答
写回答
取消 提交回答
  • 支持

    2021-02-08 16:59:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载