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