当前位置: 首页 > news >正文

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 跑完。

http://www.cnnetsun.cn/news/3223938.html

相关文章:

  • 开源项目 Riddle 让 Remarkable 电子墨水屏平板秒变“邪恶日记”,能与你对话!
  • GCC MingGW-w64 8.1安装调试
  • 幻兽帕鲁存档编辑器:5分钟学会安全修改游戏数据的终极方案
  • btp.exe打开时闪退无法登录问题及解决方法。
  • Scikit-learn Pipeline:构建可复用的 ML 流水线
  • 直播带货,知识与销售并行
  • 457. Java 反射 - 深度访问
  • 智融交通·绿动未来 | 智能新能源车辆数字主线技术与产业论坛成功举办
  • 高压隔离技术:ISOM8710与PIC32MZ的工业应用解析
  • IQR与MAD异常值检测实战:3种数据分布场景下的Python代码与效果对比
  • 萨科微slkor2026年7月6日“每日芯闻”。国际芯闻:
  • KMS_VL_ALL_AIO:Windows系统一键激活的终极解决方案
  • 户外LED广告牌尺寸规格大全
  • NAS / 服务器断电数据丢失?UPS 配套 USB关机保护板,市电断电池低自动提示服务器/电脑关机
  • easyMarkets平台评测:工具体验与平台稳定性有哪些观察重点
  • VLM增强的语义蒙特卡洛定位:让机器人真正看懂环境
  • 人生解释器的最小单位是什么?
  • 直击零线过载隐患 中线安防保护器综合治理方案
  • 细胞系vs原代:原代牙周韧带成纤维细胞,为什么不能用细胞系代替?
  • 2026年无锡干细胞机构如何考量?解析行业布局与合规焦点
  • 数字人制作公司哪家好?2026年聚焦全栈能力与行业落地的服务商推荐
  • MiMo-V2.5-TTS 全系列API使用:语音合成 + 音色克隆 + 音色设计 + 唱歌模式(限时免费)
  • 增量数据如何自动分类分级,避免目录“过期“?
  • 如何永久保存你的微信记忆:3步实现聊天记录完整备份与智能分析
  • 计算机毕业设计之考勤系统设计与实现
  • 若依系统 Druid 监控 9 个默认路径探测与弱口令爆破实战
  • J-space:Claude的意识起源,它已经注意到自己正在被测试了!
  • 10分钟部署开源智能体,零代码搞定AI写作+办公自动化!
  • 基于RocketMQ事务消息解耦霸王餐外卖CPS订单与返利发放流程
  • 2026年AI论文工具大揭秘,这几款让你的论文写作效率飙升