news 2026/7/8 14:09:48

Micronaut Data:把数据库查询挪到编译期去做

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Micronaut Data:把数据库查询挪到编译期去做

文章目录

  • Micronaut Data:把数据库查询挪到编译期去做
    • 1、它解决了什么问题
    • 2、和 Spring Data 比改了什么
    • 3、怎么上手
    • 4、什么人会需要它
    • 5、文档和发布

Micronaut Data:把数据库查询挪到编译期去做

micronaut-data 在 GitHub 上目前有 480 Star。

Micronaut 团队开源的这个数据访问工具包,专门解决一件事:用 Ahead of Time 编译把仓库接口的查询预先算好,运行时只剩一层薄薄的执行层。

1、它解决了什么问题

写过 Spring Data 或者 GORM 的人都熟悉那套机制:在 Java 接口上写个方法名,框架运行时用正则匹配加上动态代理把方法名翻译成 SQL。灵活是灵活,代价也不小。

运行时元模型靠反射维护实体之间的关系,应用越大内存吃得越多。本身 Hibernate 就有一套元模型,叠加起来等于同一个内存里存了两份。方法名到查询的翻译也是运行时干的活,每次启动都要走一遍。

Micronaut Data 把这些事全挪到编译期。元模型在编译阶段生成,查询在编译阶段算好,运行时不需要反射,也不需要动态代理。栈帧更短,内存占用更低,启动也更快。

2、和 Spring Data 比改了什么

灵感来自 GORM 和 Spring Data,但在几个关键点上做了取舍。

编译期元模型:实体关系的建模直接挪进编译器,运行时不再维护那套反射元模型。骨子里 Hibernate 该用的反射还会用,但 Micronaut Data 这层没有了。

无查询翻译:方法名到查询的映射在编译阶段完成,运行时不做这件事。框架该做的事编译时一次做掉,剩下执行。

无反射无运行时代理:仓库接口的实现是编译期生成的代码,不是运行时织出来的代理。栈跟踪会更干净,反射缓存这部分内存开销也省了。

类型安全:编译期会主动检查仓库方法能不能实现,实现不了直接编译失败。运行时才发现方法名写错这种事,提前到编译阶段报出来。

3、怎么上手

最方便的入口是 Micronaut Launch,浏览器打开选 feature,或者一行 curl 拉一个配好依赖的工程下来。

要 JPA 方案:

curl https://launch.micronaut.io/demo.zip?features=data-jpa -o demo.zip unzip demo.zip -d demo

要 JDBC 方案就把 feature 换成>4、什么人会需要它

已经在 Micronaut 生态里、想用 Spring Data 那套写法但不开运行时代理代价的团队。

对启动时间和内存占用敏感的服务,尤其是 GraalVM 原生镜像场景。Reflection 和运行时代理在原生镜像里本就要剔除,Micronaut Data 的编译期方案正好契合。

需要类型安全、希望编译期就发现仓库方法实现问题的项目。运行时炸比编译期炸难受得多。

5、文档和发布

完整文档在 Micronaut 官方文档站,快照版本发布到 JFrog OSS,正式版本通过 GitHub Actions 发布到 Maven Central。版本管理走语义化版本号,发版流程在 README 里写得很清楚:改 gradle.properties 里的 projectVersion,打 tag,等 CI 跑完。

楚:改 gradle.properties 里的 projectVersion,打 tag,等 CI 跑完。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 14:07:20

GCC MingGW-w64 8.1安装调试

文章目录 1. 编译器是干嘛的? 1.1. MSVC 1.2. GCC (MinGW-w64) 1.3 常用的场景 2 下载编译 2.1 minGW_w 64 安装 &全局设置 2.2 MinGW-w64 8.1版本须知 1. 编译器是干嘛的? 核心作用:把你写的C语言(人话),翻译成CPU能执行的机器码(0和1)。 因为CPU有很多种(Intel…

作者头像 李华
网站建设 2026/7/8 14:07:07

幻兽帕鲁存档编辑器:5分钟学会安全修改游戏数据的终极方案

幻兽帕鲁存档编辑器:5分钟学会安全修改游戏数据的终极方案 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经因为幻兽帕鲁游戏…

作者头像 李华
网站建设 2026/7/8 14:06:55

btp.exe打开时闪退无法登录问题及解决方法。

1打开btp.exe时闪退无法登录(以管理员身份运行也不行)。2 WINR,输入cmd,确定或Enter。3首先打开btp.exe文件所在盘符,cd到所在文件夹,输入btp.exe文件名,Enter即可打开。4可以打开btp.exe

作者头像 李华
网站建设 2026/7/8 14:05:04

Scikit-learn Pipeline:构建可复用的 ML 流水线

Scikit-learn Pipeline:构建可复用的 ML 流水线 1. Pipeline 基础 from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from sklearn.ensemble import RandomForestClassifier# 创建流…

作者头像 李华
网站建设 2026/7/8 14:04:19

直播带货,知识与销售并行

直播不仅是卖货,更是传递知识的舞台。我们邀请健康领域主播,一边讲解饮水知识,一边推荐适合的产品。在直播间,用户可以直接提问:“滤芯多久换一次?”“孩子适合哪种水?”主播即时回答&#xff0…

作者头像 李华