适配Hibernate 5的SearchObject/SearchResult封装API替代方案咨询
方案1:自行升级hibernate-generic-dao核心模块
如果项目仅用到该库的search、search-hibernate两个核心模块,未依赖其他扩展功能,自行升级的成本远低于替换整套实现:
- 核心修改仅需适配Hibernate 5的API变更:Hibernate 5对
Session、Criteria、Query相关接口做了调整,只需将原有调用旧版Hibernate API的逻辑替换为Hibernate 5的对应实现即可,整体改动量通常在千行代码以内 - 上层封装的SearchObject、SearchResult完全不需要调整,ZK表格的所有业务交互逻辑可以100%复用,不会影响业务层代码
- 可将升级后的两个模块抽为项目内部私有依赖,后续如果需要升级更高版本的Hibernate也可自行迭代适配
方案2:选择同类活跃维护的替代库
如果不想自行维护私有依赖,可以选择以下改造成本较低的主流方案:
- Spring Data JPA:是目前行业最主流的JPA实现封装库,社区活跃度高,完全兼容Hibernate 5+。仅需将原有SearchObject的参数转换为Spring Data JPA的
Pageable(分页+排序参数)、Specification(动态筛选条件)即可,上层ZK表格的逻辑仅需要修改DAO层调用入口,改造量可控 - QueryDSL:支持类型安全的查询构建,可与Hibernate、Spring Data JPA无缝集成,也可以很方便地兼容现有SearchObject的封装逻辑,不需要调整上层ZK的交互逻辑
选型建议
如果项目后续还计划持续迭代升级技术栈,优先选择Spring Data JPA方案,长期维护成本更低;如果项目仅需要完成Hibernate 5升级,后续不会做大的技术架构调整,直接自行升级hibernate-generic-dao核心模块是最快的方案,通常一周内即可完成适配和全量测试。
内容的提问来源于stack exchange,提问作者Géza
相关产品推荐
相关产品推荐

