- 作者简介
- 内容提要
- 关于本书
- 路线图
- 代码规范与下载
- 作者在线
- 封面插图简介
- 前言
- 译者序
- 致谢
- 第1部分 Spring 的核心
- 第1章 Spring 之旅
- 第2章 装配 Bean
- 第3章 高级装配
- 第4章 面向切面的 Spring
- 第2部分 Web 中的 Spring
- 第5章 构建 Spring Web 应用程序
- 第6章 渲染 Web 视图
- 第7章 Spring MVC 的高级技术
- 第8章 使用 Spring Web Flow
- 第9章 保护 Web 应用
- 第3部分 后端中的 Spring
- 第10章 通过 Spring 和 JDBC 征服数据库
- 第11章 使用对象-关系映射持久化数据
- 第12章 使用 NoSQL 数据库
- 第13章 缓存数据
- 第14章 保护方法应用
- 第4部分 Spring 集成
- 第15章 使用远程服务
- 第16章 使用 Spring MVC 创建 REST API
- 第17章 Spring消息
- 第18章 使用 WebSocket 和 STOMP 实现消息功能
- 第19章 使用 Spring 发送 Email
- 第20章 使用 JMX 管理 Spring Bean
- 第21章 借助 Spring Boot 简化 Spring 开发
21.2.4 持久化数据
在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论