10.2.4 使用嵌入式的数据源
除此之外,还有一个数据源是我想对读者介绍的:嵌入式数据库(embedded database)。嵌入式数据库作为应用的一部分运行,而不是应用连接的独立数据库服务器。尽管在生产环境的设置中,它并没有太大的用处,但是对于开发和测试来讲,嵌入式数据库都是很好的可选方案。这是因为每次重启应用或运行测试的时候,都能够重新填充测试数据。
Spring 的 jdbc 命名空间能够简化嵌入式数据库的配置。例如,如下的程序清单展现了如何使用 jdbc 命名空间来配置嵌入式的 H2 数据库,它会预先加载一组测试数据。
我们将 <jdbc:embedded-database>
的 type 属性设置为 H2,表明嵌入式数据库应该是 H2 数据库(要确保 H2 位于应用的类路径下)。另外,我们还可以将 type 设置为 DERBY,以使用嵌入式的 Apache Derby 数据库。
在 <jdbc:embedded-database>
中,我们可以不配置也可以配置多个 <jdbc:script>
元素来搭建数据库。程序清单 10.1 中包含了两个 <jdbc:script>
元素:第一个引用了 schema.sql,它包含了在数据库中创建表的 SQL;第二个引用了 test-data.sql,用来将测试数据填充到数据库中。
除了搭建嵌入式数据库以外,<jdbc:embedded-database>
元素还会暴露一个数据源,我们可以像使用其他的数据源那样来使用它。在这里,id 属性被设置成了 dataSource,这也是所暴露数据源的 bean ID。因此,当我们需要 javax.sql.DataSource 的时候,就可以注入 dataSource bean。
如果使用 Java 来配置嵌入式数据库时,不会像 jdbc 命名空间那么简便,我们可以使用 EmbeddedDatabaseBuilder 来构建 DataSource:
可以看到,setType() 方法等同于 <jdbc:embedded-database>
元素中的 type 属性,此外,我们这里用 addScript() 代替 <jdbc:script>
元素来指定初始化 SQL。
Last updated