有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何通过Spring使用脚本初始化inmemory HSQLDB

我正在尝试对我的DAO进行单元测试(使用Spring和Hibernate)。我正在根据this教程使用HSQLDB。本教程指出,可以使用SQL脚本初始化内存中的HSQLDB数据库,但我找不到有关如何在Spring中进行初始化的信息。以下是相关的Spring上下文配置:

 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:mem:mydb" />
    <property name="username" value="sa" />
    <property name="password" value="" />
    <property name="initialSize" value="5" />
    <property name="maxActive" value="10" />
    <property name="poolPreparedStatements" value="true" />
    <property name="maxOpenPreparedStatements" value="10" />
</bean> 

任何帮助都将不胜感激。谢谢


共 (1) 个答案

  1. # 1 楼答案

    如果您正在尝试使用内存数据库和Spring,那么有一个新的^{} namespace for Spring 3使使用嵌入式数据库变得非常简单

    最好的部分是,它充当DataSource,因此可以很容易地插入它来替换现有的dataSourcebean

    <jdbc:embedded-database id="dataSource" type="HSQL">
        <jdbc:script location="classpath:schema.sql"/>
        <jdbc:script location="classpath:test-data.sql"/>
    </jdbc:embedded-database>
    

    如果您对Java配置更感兴趣,可以看看EmbeddedDatabaseBuilder(Spring 3.0中新增的)

    @Configuration
    public class DatabaseTestConfig {
        @Bean
        public DataSource dataSource() {
            return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.HSQL)
                .addScript("classpath:schema.sql")
                .addScript("classpath:test-data.sql")
                .build();
        }
    }