为什么选择 Spring Data JDBC?
在 Java 领域,关系型数据库的主要持久化 API 当然是 JPA,它拥有自己专属的 Spring Data 模块。 那为什么还要有另一个呢?
JPA 为了帮助开发者做了大量工作。 除了其他功能外,它会跟踪实体的变更。 它为你实现延迟加载。 它允许你将种类繁多的对象结构映射到同样丰富多样的数据库设计。
这很棒,让很多事情变得非常简单。 只需看看一个基本的 JPA 教程即可。 但人们常常会感到非常困惑,不明白为什么 JPA 要以某种特定方式行事。 此外,一些在概念上非常简单的事情,在使用 JPA 时却变得相当困难。
Spring Data JDBC 在概念上力求更加简洁,通过采纳以下设计决策:
-
如果你加载一个实体,就会执行 SQL 语句。 一旦完成此操作,你就获得了一个完全加载的实体。 不会进行延迟加载或缓存。
-
如果你保存一个实体,它就会被保存。 如果你不保存,它就不会被保存。 这里没有脏数据跟踪,也没有会话。
-
有一种简单的模型用于将实体映射到表。 它可能仅适用于相当简单的情况。 如果您不喜欢这种方式,应该自行编写映射策略。 Spring Data JDBC 仅提供非常有限的注解支持来自定义该策略。