为什么选择 Spring Data JDBC?
Java 世界中用于关系数据库的主要持久化 API 当然是 JPA,它有自己的 Spring Data 模块。为什么还要有另一个?
JPA 做了很多事情来帮助开发者。其中包括跟踪实体的变更。它为您做延迟加载。它让您把各种各样的对象结构映射到同样五花八门的数据库设计。
这很棒,让很多事情变得非常简单。只需看一下基础的 JPA 教程即可。但它常常让人困惑:为什么 JPA 会做某件事。此外,一些概念上非常简单的事情,用 JPA 却变得相当困难。
Spring Data JDBC 在概念上力求简单得多,它秉持以下设计决策:
-
如果您加载一个实体,就会运行 SQL 语句。一旦完成,您就得到一个完全加载的实体。不做延迟加载,也不做缓存。
-
如果您保存一个实体,它就被保存。如果您不保存,它就不保存。没有脏跟踪,也没有会话。
-
实体到表的映射采用简单的模型。它可能只适用于相当简单的场景。如果您不喜欢,应该编写自己的策略。Spring Data JDBC 对用注解自定义策略的支持非常有限。