请问有没有关于使用Java的不同Query DSL库的性能比较的资源,例如:Querydsl、jOOQ、JEQUEL、activejdbc、iciql等等……
背景:我正在使用Spring JDBC模板,但这仍然需要以纯字符串格式编写查询。虽然我在直接编写查询方面没有问题,但我担心直接依赖DB表名。我不想使用任何ORM框架,如Hibernate或JPA/EclipseLink。我需要尽可能高的原始性能(在我看来,它们适用于更多的CRUD中心应用程序)。我只能承受这些DSL的一些轻微开销,如果那只是一点点的话(我相信,它们主要是StringBuilder/String连接!)
我考虑过在某些xml中外部化命名查询。但只是试图评估不同Query DSL库提供的价值。
编辑:更多关于我的要求: 我想知道在使用它们的API方法构建一个中等复杂查询时,它们之间的性能比较。我只需使用这些查询DSL库中的任何一个生成查询字符串,并将其传递给Spring JDBC模板即可。因此,我想知道添加这个中间步骤是否会带来相当大的性能损失,如果是,我想使用命名查询或构建自己的库,该库仅使用StingBuilder或类似方法
更新我对jOOQ、iciql和QueryDSL的经验:
虽然我在原始帖子中没有提到这一点,但我也非常关心易用性和实体类中需要的开销(例如是否需要任何其他注释或实现)。
jOOQ:
- 需要将实体属性更改为库特定方式
- 可以返回SQL查询字符串
Iciql:
- 实体可以映射为无需或少量更改的方式(可以使用总共3种方式进行映射)
- 但这限制了仅使用选择查询(对于更新/删除/...需要再次更改实体)
QueryDSL:
- 绑定实体与表的多种方法(除了库特定方式外,还支持使用JPA注释)。但我们至少需要修改实体
- 没有简单/直接的方法来获取查询字符串
(所有观察结果都是基于我对这些的了解;如果有任何不正确的地方,请纠正)
基于以上所有内容,我仍然坚持编写命名查询:(但是,由于Lukas Eder的答案似乎解释了我的原始帖子的关注点(性能),因此我已经接受了他的答案。