spring - Spring JdbcTemplate 是否比 Spring Data Jpa 快?
问题描述
我们的客户强迫我们使用 JdbcTemplate 而不是 Spring Data Jpa 来开发 Spring 项目。但是,该应用程序在响应速度和交付方面并不重要(它是客户端最终用户的内部 Web 应用程序)。我们想使用 Spring Data Jpa。
问题:使用 JdbcTemplate 是否有一些客观原因是因为应用程序的速度?从我的角度来看,会有不同的瓶颈。
解决方案
这个问题,如果不指定确切的用例,就不可能回答更快的问题。
JdbcTemplate
在谈论纯查询执行时很可能会更快,因为 JPA 实现会做更多的事情:
- 解析 JPQL(假设您正在使用它)
- 从中创建一个 SQL 查询
- 执行它
- 将结果转换为对象
虽然模板将(几乎)只是:
- 执行查询
- 将结果作为呼叫
ResultSetMapper
或类似的方式交给您。
当然,JPA 做这一切是有原因的。
- 它提供了合理的数据库独立性。
- 它会跟踪您的更改并生成正确的更新语句以持久保存它们。
- 它允许延迟加载,因此您不必事先考虑要加载什么(当然,如果您关心性能,您仍然必须这样做)。
这些东西的成本超出了性能。
JPA 提供的抽象实际上非常复杂且有漏洞,大多数使用它的开发人员都没有正确理解它。虽然我认为在许多情况下使用 JPA 是完全合理的,但我也可以理解人们在他们的项目中禁止它。为了在这方面做出受过良好教育的决定,谈论性能绝对是太有限了。
推荐阅读
- spring-boot - 使用 kotlin spring 和 docker 配置远程调试
- perl - 如何只匹配几个数字?
- java - 如何在 OjAlgo 中序列化 Primitive64Matrix?
- php - 带有 BOM 的 UTF-16LE 编码
- reactjs - HeaderBackButton 给出错误反应导航堆栈
- excel - 带有循环的 UDF 非常缓慢且效率低下
- xml - 返回第一个结果后 BaseX XSLT 失败
- excel - 选项 button_click 如果为真则返回文本
- wpf - 如何处理 WPF 中 ComboBox 的 ControlTemplate 中的单击?
- json - 使用 jq 列出嵌套对象的所有键