Jimmer框架v0.9.71版本发布:DTO增强与保存命令优化
Jimmer是一个现代化的Java/Kotlin ORM框架,它通过创新的设计理念简化了数据访问层的开发工作。Jimmer支持不可变实体、类型安全的查询构建器、GraphQL集成等特性,让开发者能够以声明式的方式操作数据。本次发布的v0.9.71版本带来了多项重要改进,特别是在DTO处理和保存命令方面的增强。
保存命令的重大改进
新版本对保存命令进行了全面优化,现在开发者可以更灵活地控制返回的修改后实体形状。这一改进主要体现在两个方面:
-
通过Fetcher控制返回形状:开发者现在可以通过Fetcher来精确控制返回的
modifiedEntity结构,只获取业务真正需要的关联数据。 -
通过输出DTO类控制返回形状:新增支持通过输出DTO类来定义返回的
modifiedView结构,使得返回数据的形状可以完全按照前端需求定制。
框架内部实现了智能优化:当请求的形状不超过已有实体数据时,直接裁剪现有对象;否则才会执行新的无缓存查询。这一机制既保证了灵活性,又避免了不必要的性能开销。
Kotlin DTO注解支持
针对Kotlin开发者,新版本引入了@KotlinDto注解,这是一个专门用于DTO类型的注解(不能用于普通Kotlin类型)。该注解由jimmer-ksp处理器处理,会被jimmer-apt忽略。
这个注解的主要作用是细粒度控制DTO的不可变性。我们知道Jimmer可以为Kotlin生成不可变(immutable)和可变(mutable)两种DTO,之前只能通过全局配置jimmer.dto.mutable来控制。现在有了@KotlinDto注解,开发者可以针对每个DTO类型单独控制其不可变性,大大提高了灵活性。
属性级标量提供者支持
新版本增加了PropScalarProviderFactory接口支持,这个接口可以隐式地为属性提供标量值。当框架需要确定某个属性是否需要标量提供者时,会通过这个接口询问开发者。
在使用Spring Starter时,这个接口应该作为受管Bean提供;在其他情况下,则需要作为SqlClient的配置项。这一特性为属性值的动态处理提供了更多可能性。
API简化与优化
随着保存命令功能的不断丰富,早期版本中为了便利性提供的众多快捷方法导致了API膨胀问题。新版本开始对这些方法进行清理:
- 标记了大量保存命令的快捷方法为
@Deprecated,为开发者提供过渡期 - 未来版本将对这些API进行精简,保持核心功能的同时提高API的整洁度
- 建议开发者开始逐步迁移到更规范的API使用方式
总结
Jimmer v0.9.71版本在保持框架核心优势的同时,针对实际开发中的痛点进行了多项改进。特别是对保存命令的优化和Kotlin DTO支持的增强,使得框架在处理复杂数据场景时更加得心应手。这些改进不仅提高了开发效率,也为后续版本的功能演进奠定了良好基础。
对于现有项目,建议开发者关注API变更说明,及时调整相关代码以适应未来的API简化。新项目则可以充分利用这些新特性,构建更加健壮和高效的数据访问层。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



