Blaze-Persistence:给 JPA 加一层本该有的查询能力 文章目录Blaze-Persistence给 JPA 加一层本该有的查询能力1、 它要解决的问题2、 核心能力3、 Entity View 模块4、 怎么用5、 兼容性6、 适合哪些人Blaze-Persistence给 JPA 加一层本该有的查询能力Blaze-Persistence 在 GitHub 上拿到了 855 Star。它做的事很专一给 JPA 提供一套更厚的 Criteria API把用 JPA 时碰到的一堆限制补回来。CTE、递归查询、UNION、RETURNING、键集分页这些原生 JPA 不支持的东西它能写。1、 它要解决的问题用 JPA 写过复杂查询的人大概都清楚。NamedQuery 写死了 SQL JPQL 表达能力有限标准 Criteria API 啰嗦还容易写错遇到分页深翻就性能崩盘。多投一投少用一些 SELECT本来数据库一行 SQL 解决的事要么拆成多次查询在内存里拼要么直接绕开 ORM 写原生 SQL。Blaze-Persistence 把这层补上了。它不是替代 JPA 的 ORM是架在 JPA 之上的一套查询构造器底层还是走 Hibernate、EclipseLink、DataNucleus 这些 provider。开发者用它的 fluent API 写查询它翻译成对应 provider 能跑的 SQL。2、 核心能力能做的事大致这么几类:普通 JPA 写不出来的 SQL 特性它给做成了 API。CTE 和递归 CTE 可以定义临时结果集DML CTE 可以在 CTE 里做修改操作。RETURNING 子句让 INSERT/UPDATE/DELETE 后直接拿到改动后的数据省一次回查。UNION、EXCEPT、INTERSECT 这些集合操作能拼出多结果合并的查询以前得绕好几道弯。VALUES 子句可以做报表查询group_concat、日期截取、日期运算这些函数它内置了一堆跨 provider 表现一致。键集分页解决了深翻页的性能问题传统 OFFSET 翻得越深越慢键集用上一页最后一行的键定位翻多深都稳定。3、 Entity View 模块这个模块单独说一句。它的思路类似数据库的视图但作用在 JPA 实体上。实际项目里 DTO 是绕不开的东西。直接查实体出来一堆懒加载和 N1手写 DTO 又要维护投影逻辑。Entity View 让你写一个接口描述要哪些字段框架自动生成 JOIN 和投影 SQL。写法上像这样EntityView(Cat.class)publicinterfaceCatView{IdMappingIntegergetId();Mapping(CONCAT(mother.name, s kitty , name))StringgetCuteName();SimpleCatViewgetFather();}cuteName是计算字段JPQL 表达式直接给。father关联自动 LEFT JOIN 出来。查询时把 view 应用到 CriteriaBuilder 上拿到结果前只取了需要的那几列不发多余的 SQL。4、 怎么用Maven 引入给一个版本属性就够了模块都按这个版本一起发布propertiesblaze-persistence.version1.6.18/blaze-persistence.version/properties入口是CriteriaBuilderFactory和EntityManagerFactory同生命周期CriteriaBuilderConfigurationconfigCriteria.getDefault();CriteriaBuilderFactorycbfconfig.createCriteriaBuilderFactory(entityManagerFactory);写一个查询把关联一起 fetch 进来一行就能完事cbf.create(em,Cat.class).fetch(kittens.father).getResultList();底层生成的 SQL 是带两个 LEFT JOIN FETCH 的语句路径写错了会基于 metamodel 提前报错不用等到运行时。5、 兼容性支持的版本跨度很宽。Hibernate 从 4.2 一路到 7.1EclipseLink 2.6Spring 4.3Spring Data 1.11 到 3.5Quarkus 1.4。最低只要 JPA 2.0能塞进 Java EE 6 或 Spring 4 的老项目。Java 运行时方面能跑在 Java 7 上最新测到 Java 21。Spring Boot、DeltaSpike Data、JAX-RS、GraphQL、Jackson 这些都有现成集成模块要接进去基本不用自己写胶水代码。6、 适合哪些人觉得 JPA Criteria 啰嗦难维护、又不想退回原生 SQL 的团队查询里有 UNION、CTE、深分页原生 JPA 写不出来只能换方案的人DTO 投影逻辑散得到处都是、想统一管理前端返回结构的项目老项目里 Hibernate 4.x 还在跑、想升级查询能力但不能动 ORM 的开发者如果想试水作者提供了 Maven archetypecore、entity-view、spring-data、spring-boot、quarkus 各种集成模板都有一条命令生成完整可跑的工程自己改着试就行。etypecore、entity-view、spring-data、spring-boot、quarkus 各种集成模板都有一条命令生成完整可跑的工程自己改着试就行。

相关新闻

最新新闻

空间计量经济学:从Elhorst模型到Python实践,掌握SAR与SEM核心原理

空间计量经济学:从Elhorst模型到Python实践,掌握SAR与SEM核心原理

简介:空间计量经济学是研究地理或网络空间中数据相互依赖性的重要分支,它打破了传统计量经济学中观测值相互独立的强假设。其核心原理在于通过空间权重矩阵量化单元间的邻近关系,并构建模型来刻画空间依赖效应。这一技术价值在于能更准确地识…

2026/8/27 9:22:59
从GMVAE项目压缩包到生成模型实战:环境搭建、原理与调试全解析

从GMVAE项目压缩包到生成模型实战:环境搭建、原理与调试全解析

简介:变分自编码器(VAE)是生成模型领域的核心基础技术,它通过编码器-解码器架构学习数据的概率潜空间,实现了从数据压缩到新样本生成的能力。其核心原理在于用概率分布替代确定性编码,通过优化证据下界&…

2026/8/27 9:22:59
多模态情感分析工程落地实战:对齐、融合与部署

多模态情感分析工程落地实战:对齐、融合与部署

简介:多模态情感分析是人工智能理解人类情绪的关键技术,其核心在于文本、语音、图像、视频等异构信号的时序对齐与语义融合。不同于学术Demo,工业级应用需解决时间同步偏差、特征空间不一致、决策可信度不足等工程难题。通过跨模态注意力、Te…

2026/8/27 9:22:59
输送机变频调速怎么搞?从选型到调试的完整教程,节能改造必看

输送机变频调速怎么搞?从选型到调试的完整教程,节能改造必看

在工厂和仓库里,输送设备通常是24小时连续运行的,耗电量占整个厂区用电的很大比例。传统的输送设备大多采用定速运行——电机通电就以固定转速运转,不管输送线上有没有货、货多货少,速度都一样。这种运行方式有两个明显的问题&…

2026/8/27 9:22:59
美赛C题实战复盘:从数据预处理到多目标优化的完整建模策略

美赛C题实战复盘:从数据预处理到多目标优化的完整建模策略

1. 项目概述:从复盘到备战,一次完整的竞赛策略迭代 去年带队打完美赛,尤其是C题这种典型的“数据决策”型题目后,我花了差不多一周时间,把整个解题过程从头到尾捋了一遍。这不仅仅是为了写个赛后总结交差,更…

2026/8/27 9:22:59
Spark 4.x Variant深入解析:半结构化数据处理的灵活与高效

Spark 4.x Variant深入解析:半结构化数据处理的灵活与高效

在近期的 Spark 技术调研里,我发现讨论最多、也最容易让人误解的新特性就是 Spark 4.x 中的 Variant 类型。很多读者问:Variant 是不是就是“升级版 JSON”?它的性能真的比原来好很多吗?项目里到底什么时候该换,什么时…

2026/8/27 9:17:59