Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分析一下Java ORM 框架的原理,大家怎么看?

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

提问于 2020-12-15 04:42:49
回答 0关注 0查看 129

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

回答

成为首答用户。去 写回答
相关文章
java ORM框架(二)
MyBatis 是一个半自动 ORM 框架,它允许开发人员使用 XML 或注解配置 SQL 映射,从而实现将 Java 对象映射到关系型数据库中。
堕落飞鸟
2023/04/04
3150
java ORM框架(一)
Java ORM (Object-Relational Mapping) 框架是一种用于将 Java 对象映射到关系型数据库中的工具。ORM 框架使得开发人员能够通过对象操作数据库而不必直接使用 SQL 查询。ORM 框架的主要目的是简化数据访问层的开发和维护。
堕落飞鸟
2023/04/04
1.4K0
java ORM框架(三)
Spring Data JPA 是一个基于 Spring Framework 和 JPA 规范的 ORM 框架。它提供了一种简单的方式来访问和操作关系型数据库。
堕落飞鸟
2023/04/04
4490
Nodejs相关ORM框架分析
写这篇blog的原因,想找个node的ORM框架用用,确很难找到一篇对比分析这些ORM框架的文章,唯一找到了一篇,居然是通过star数来论英雄,我觉着很难服众,于是就找几个看看。后来又不想分析,因为我发现node这种野蛮生长,滋生这些ORM轮子比比皆是,远比我想象的多;后来又觉着可以写,作为一个java出身业余研究node的就想通过java的ORM框架来洞悉node这群ORM框架的是非曲直,于是挑了几个框架小扯一篇。
coder2028
2022/10/17
1.4K0
【大家的项目】Rbatis - 制作 Rust 语言堪比 Mybatis 的异步 ORM 框架
因为是复刻Java系的Mybatis,因此框架暂命名 Rbatis。小部分功能还在进行中。github链接https://github.com/rbatis/rbatis
MikeLoveRust
2020/07/14
1.3K0
Web框架中的ORM框架
在 Python 实现的 Web 框架中,通过 API 接口来访问后端的视图函数,视图函数对数据库中的数据进行处理然后返回给前端。
Python碎片公众号
2021/02/26
2K0
Web框架中的ORM框架
计费方式调整,大家怎么看?
微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务。开发者可以使用云开发快速开发小程序、小游戏、公众号网页等,并且原生打通微信开放能力。开发者无需搭建服务器,可免鉴权直接使用平台提供的 API 进行业务开发。
江拥羡橙
2022/11/15
2.3K0
计费方式调整,大家怎么看?
C# 通过反射初探ORM框架的实现原理
  以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#的ORM框架,所以就想着用反射简单的实现一下ORM框架的内容,简单的增删改查,没有用到多表之间的联系。
李家酒馆酒保
2018/01/11
7220
C# 通过反射初探ORM框架的实现原理
该文介绍了如何使用C#和.NET Core实现对数据库增删改查操作,包括对单表查询、多表查询、插入记录、更新记录和删除记录等功能的实现。同时,文章还介绍了如何通过反射机制动态加载类,以及如何使用委托和Lambda表达式对数据库操作进行封装。
李家酒馆酒保
2017/12/26
1.2K0
【大家的项目】SeaORM - An async & dynamic ORM for Rust!
Join our Discord server to chat with others in the SeaQL community!
MikeLoveRust
2022/03/28
1.1K0
ORM框架SQLAlchemy
原文链接:https://www.cnblogs.com/mengqingjian/articles/8521512.html
菲宇
2019/09/23
1.2K0
ORM框架SQLAlchemy
免费引擎开启收费模式,大家怎么看?
Layabox引擎团队在1月19号推出了LayaAir 2.0引擎正式版的同时还推出了引擎的会员专属功能收费。有少数开发者对于免费引擎开始推出收费功能不太理解或者是不了解,以为是引擎全面收费,基于此,我觉得有些必要先解释一下,并愿意和大家一起探讨免费引擎的可持续发展模式。
Layabox Charley
2019/04/30
1.8K0
Nodejs相关ORM框架分析_2023-02-27
写这篇blog的原因,想找个node的ORM框架用用,确很难找到一篇对比分析这些ORM框架的文章,唯一找到了一篇,居然是通过star数来论英雄,我觉着很难服众,于是就找几个看看。后来又不想分析,因为我发现node这种野蛮生长,滋生这些ORM轮子比比皆是,远比我想象的多;后来又觉着可以写,作为一个java出身业余研究node的就想通过java的ORM框架来洞悉node这群ORM框架的是非曲直,于是挑了几个框架小扯一篇。
用户10377376
2023/02/27
2.2K0
python ORM框架SQLAlchemy
SQLAlchemy是一个基于Python的ORM框架。该框架是建立在DB-API之上,使用关系对象映射进行数据库操作。
用户5760343
2022/05/14
7960
python ORM框架sqlAlchemy
最近在研究mysql的ORM框架,忽然看到了一个pip的包sqlalchemy,让我觉得很神奇,用下来的感觉和java的hibernate差不多,后边的链式查询又让我觉得和我很喜欢用的mybatis plus差不多,于是抱着好奇加上学习的态度,shigen整理了一下sqlalchemy的用法。更多资料,参见sqlalchemy官网
shigen
2023/08/18
5950
peewee优雅的ORM框架-进阶
接上篇文章,如果我们想要修改表结构或者字段属性该如何操作呢?带着这个问题,今天我们就一起来了解 peewee 的进阶操作。
Python研究所
2022/06/17
6010
peewee优雅的ORM框架-进阶
Android 常用的ORM框架详解
1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。 官方网站:http://ormlite.com/sqlite_java_android_orm.shtml 这个也是之前我在项目中 经常用到的,下面提供一个例子 新建一个User类 @SuppressWarnings("serial") @Entity(table="users") public
xiangzhihong
2018/02/02
1K0
spring整合ORM框架
注:本文篇幅有点长,总字数3万多,所以建议各位下载源码学习。(如需要请收藏!转载请声明来源,谢谢!)
逍遥壮士
2020/09/18
1.5K0
spring整合ORM框架
peewee优雅的ORM框架-入门
在 Python 的 ORM 框架中,比较主流的有 Sqlalchemy,peewee,pony 等等。但是其中 peewee 和 Django 的 Models 框架很像,如果了解 Django 的同学肯定对 peewee 会很亲切。今天我们就一起走进 peewee 的世界。
Python研究所
2022/06/17
7430
peewee优雅的ORM框架-入门
开源日志框架的原理与分析
日志用于记录系统中硬件,软件,系统,进程和应用运行时的信息,同时可以监控系统中发生的各种事件,我们可以用它检查发生错误的原因,找到攻击者留下的攻击痕迹,也可以用来发出警报。
疯狂的KK
2019/12/03
8310
开源日志框架的原理与分析

相似问题

大家怎么看星期六的薅羊毛事件?

1231

mummer共线性分析的图怎么看?

1439

登录ubuntu系统,密码是多少?

2461

大家,请教一下微信小游戏如何自己做埋点统计?

0338

Java的消息队列的推送原理?

1556
相关问答用户
新浪微博 | 高级总监擅长4个领域
萃橙科技 | 合伙人擅长4个领域
腾讯 | 技术专家擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档