首页 > 解决方案 > Spring JdbcTemplate 是否比 Spring Data Jpa 快?

问题描述

我们的客户强迫我们使用 JdbcTemplate 而不是 Spring Data Jpa 来开发 Spring 项目。但是,该应用程序在响应速度和交付方面并不重要(它是客户端最终用户的内部 Web 应用程序)。我们想使用 Spring Data Jpa。

问题:使用 JdbcTemplate 是否有一些客观原因是因为应用程序的速度?从我的角度来看,会有不同的瓶颈。

标签: springperformancespring-data-jpajdbctemplate

解决方案


这个问题,如果不指定确切的用例,就不可能回答更快的问题。

JdbcTemplate在谈论纯查询执行时很可能会更快,因为 JPA 实现会做更多的事情:

  • 解析 JPQL(假设您正在使用它)
  • 从中创建一个 SQL 查询
  • 执行它
  • 将结果转换为对象

虽然模板将(几乎)只是:

  • 执行查询
  • 将结果作为呼叫ResultSetMapper或类似的方式交给您。

当然,JPA 做这一切是有原因的。

  • 它提供了合理的数据库独立性。
  • 它会跟踪您的更改并生成正确的更新语句以持久保存它们。
  • 它允许延迟加载,因此您不必事先考虑要加载什么(当然,如果您关心性能,您仍然必须这样做)。

这些东西的成本超出了性能。

JPA 提供的抽象实际上非常复杂且有漏洞,大多数使用它的开发人员都没有正确理解它。虽然我认为在许多情况下使用 JPA 是完全合理的,但我也可以理解人们在他们的项目中禁止它。为了在这方面做出受过良好教育的决定,谈论性能绝对是太有限了。


推荐阅读