Why Spring Data JDBC?

在 Java 世界中,关系型数据库的主要持久性 API 当然是 JPA,它拥有自己的 Spring Data 模块。为什么还有另一个?

JPA 会做许多事情来帮助开发者。除其他事项外,它跟踪对实体的更改。它会做一些延迟加载,它让你能够将广泛的对象构造映射到同样广泛的数据库设计。

这非常不错,并且让许多事情变得非常容易。只需看一个基本的 JPA 教程。但是,JPA 为什么会做某些事情往往让人感到非常困惑。此外,那些概念上非常简单的事物使用 JPA 会变得相当困难。

Spring Data JDBC 的目标是在概念上变得简单的多,方法是采用下列设计决策:

  • 如果您加载一个实体,则会运行 SQL 语句。完成之后,您将拥有一个完全已加载的实体。不会执行延迟加载或缓存。

  • 如果您保存一个实体,则它将被保存。否则,它不会被保存。没有脏跟踪,也没有会话。

  • 有一个简单的模型,用于将实体映射到表。它可能仅适用于相当简单的情况。如果您不喜欢这种情况,则应编写您自己的策略。Spring 数据 JDBC 仅提供非常有限的支持,用于使用注释自定义该策略。