返回介绍

21.2.4 持久化数据

发布于 2024-08-17 00:45:49 字数 1908 浏览 0 评论 0 收藏 0

在Spring应用中,有多种使用数据库的方式。我们可以使用JPA或Hibernate将对象映射为关系型数据库中的表和列。或者,我们干脆放弃关系型数据库,使用其他类型的数据库,如Mongo或Neo4j。

对于Contacts应用来说,关系型数据库是不错的选择。我们将会使用H2数据库和JDBC(使用Spring的JdbcTemplate),让这个过程尽可能地简单。

选择这种方案就需要在构建中添加一些依赖。JDBC Starter依赖会将Spring JdbcTemplate需要的所有内容都引入进来。不过,要结合使用H2数据库的话,我们还需要添加H2依赖。如果使用Gradle的话,在dependencies代码块添加如下两行代码就能完成这项任务:

如果使用Maven构建的话,我们需要如下的两个<dependency>代码块:

将这两项依赖添加到构建之中后,我们就可以编写Repository类了。如下程序清单中的ContactRepository将会使用注入的JdbcTemplate实现在数据库中读取和写入Contact对象。

程序清单21.6 ContactRepository能够从数据库中存取Contact

与ContactController类似,这个Repository类非常简单。它与传统Spring应用中的Repository类并没有什么差别。从实现中,根本无法看出它要用于Spring Boot的应用程序中。findAll()方法使用注入的JdbcTemplate从数据库中获取Contact对象,save()方法使用注入的JdbcTemplate保存新的Contact对象。因为ContactRepository使用了@Repository注解,因此在组件扫描的时候,它会被发现并创建为Spring应用上下文中的bean。

但是,JdbcTemplate呢?我们难道不需要在Spring应用上下文中声明JdbcTemplatebean吗?为了声明它,我们是不是还要声明一个H2 DataSource?

对这两个问题的简短问答就是“不需要”。当Spring Boot探测到Spring的JDBC模块和H2在类路径下的时候,自动配置就会发挥作用,将会自动配置JdbcTemplatebean和H2DataSourcebean。Spring Boot再一次为我们处理了所有的Spring配置。

那数据库模式该怎么处理呢?我们必须要自己来定义创建contacts表的模式,对不对?

这绝对是正确的!Spring Boot没有办法猜测contacts表会是什么样子。所以,我们需要定义模式,如下所示:

现在,我们只需要有一种方式加载这个“create table”的SQL并将其在H2数据库中执行就可以了。幸好,Spring Boot也涵盖了这项功能。如果我们将这个文件命名为schema.sql并将其放在类路径根下(也就是Maven或Gradle项目的“src/main/resources”目录下),当应用启动的时候,就会找到这个文件并进项数据加载。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文