程序员的知识教程库

网站首页 > 教程分享 正文

介绍 Spring Data JDBC(介绍的拼音)

henian88 2024-10-14 10:03:05 教程分享 8 ℃ 0 评论

Spring Data Lovelace版本已经发布,本文将介绍其中的Spring Data新模块:Spring Data JDBC。

Spring Data JDBC背后的思想是提供对关系数据库的访问,而无需服从JPA的复杂性。JPA提供延迟加载,缓存和脏跟踪等功能。这些特性当然都很棒,如果你需要这些它们,可以考虑JPA,但是实际使用起来比以想象的要难。

延迟加载可能会在你不期望它时触发昂贵的操作,或者它可能会因异常而失败。当你真正想要比较一个被修改过的实体的两个版本时,缓存可能会妨碍你很难顺利处理所有持久性操作。

Spring Data JDBC旨在实现更简单的模型。不会有缓存,脏跟踪或延迟加载。相反,只有在调用存储库方法时才会发出SQL语句。作为该方法返回的对象在方法返回之前完全加载。实体没有“会话”和代理。所有这些都应该使Spring Data JDBC更易于理解。

当然,这种更简单的方法会导致局限性,这些将在后面的帖子中介绍。此外,它是第一个版本,尽管我们想要并计划实施许多功能,但我们不得不推迟以便你尽早使用到这些内容。

我们来看一个简单的例子

请注意,你不需要getter或setter。如果你愿意,也可以使用它们。实际上,唯一的要求是实体有一个用Id注释的属性(这个是@ org.springframework.data.annotation.Id,而不是javax.persistence)。

接下来,我们需要声明一个repository,最简单的方式是让它扩展CrudRepository。

最后,我们需要配置ApplicationContext以启用repositories的创建。

让我们一步一步地完成配置。

1.EnableJdbcRepositories可以创建存储库。由于它需要存在一些bean,我们需要其余的配置。

2.扩展JdbcConfiguration会向ApplicationContext添加一些默认bean。你可以覆盖其方法以自定义Spring Data JDBC的某些行为。现在,我们使用默认实现。

3.真正重要的部分是NamedParameterJdbcOperations,它在内部用于向数据库提交SQL语句。

4.严格来说,事务管理不是必需的。但是你的工作不支持跨越多个操作的交易,没有人想要,对吧?

5.Spring Data JDBC不直接使用DataSource,但是,由于TransactionManager和NamedParameterJdbcOperations需要它,因此将其注册为bean是确保两者使用相同实例的简单方法。

这就是你开始使用它所需要的一切。现在让我们在测试中运行它:

@Query注解

你可能不会仅仅使用CrudRepository中的基本CRUD方法。在Spring Data后续版本中,有个更强大的特性是通过方法名称来推导查询,但是我们决定推迟查询推导。在这之前,你可以使用简单的@Query注解来指定存储库查询方法:

请注意,如果使用-parameters标志进行编译,则不需要@Param注解。

如果要执行更新或删除操作,则可以向方法添加@Modifying注解。

让我们创建另一个测试以试用新方法。

1.由于Java对象与其对应行之间的连接只是其Id加上其类型,因此将Id设置为null并再次保存它会在数据库中创建一条新记录。

2.我们正在进行不区分大小写(like)搜索,因此,我们找到“Albert”和“Bertram”,但不是“Beth”

小结

你可以查看示例,文档,当然还有源代码。如果你有任何疑问,请在StackOverflow上提问。如果你发现错误或想要请求新功能,请创建一个问题。

原文:https://spring.io/blog/2018/09/17/introducing-spring-data-jdbc

编译:春之雨

说明:版权归原文作者,翻译仅供学习参考。欢迎反馈和讨论,感谢阅读。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表