在Spring Boot应用程序中使用内存和生产数据库

时间:2016-11-17 11:35:59

标签: java spring-boot hsqldb in-memory-database

我正在尝试使用spring-boot与数据库集成。

我已阅读官方29.1 Configure a DataSource主题,对我来说非常清楚。

我想用Heroku发布我的应用程序,所以我看看官方sample项目配置。

pom.xml的一部分:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    //...
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
    </dependency>
    //...
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1203-jdbc42</version>
    </dependency>
    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>3.4.1</version>
    </dependency>

我现在想知道,使用像hsqldb这样的内存数据库和正常的类似生产的数据库(这里是postgres)的目的是什么?什么情况下有用呢?

更重要的是,这将如何运作?

修改

Ofc,在我提到的示例项目的情况下,我错过了一些东西。 application.properties中的注释解释了为什么使用hsql:

# Database Config
# Un-comment these lines to connect to a database. When commented out, you automatically get an in-memory-database.
#spring.jpa.hibernate.ddl-auto=update

1 个答案:

答案 0 :(得分:3)

我有2个案例:

  1. 测试目的 - 您可以在进行自动化测试时使用它,这样您就不需要设置一个真正的&#34;真实的&#34;生产就像数据库,但有一些东西可以设置hsql并填充它 - 可以节省大量资源

  2. 内存缓存 - 在您不仅需要键值缓存的情况下,但有些更灵活,例如基于过滤器的提取(可以以不同方式组合的多个键)HSQL是非常适合它,因为你可以在hypersql中缓存所有(或部分),从中提取它比从真实&#34;中提取更快。数据库。此外,您可以使用它根据数据库中的数据缓存一些业务逻辑结果,并将HyperSQL的结果提供给任何请求 - 这可以大大节省处理时间