Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring Boot应用程序中同时使用内存和生产数据库_Java_Spring Boot_Hsqldb_In Memory Database - Fatal编程技术网

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

Java 在Spring Boot应用程序中同时使用内存和生产数据库,java,spring-boot,hsqldb,in-memory-database,Java,Spring Boot,Hsqldb,In Memory Database,我正在尝试开始spring boot与数据库的集成 我读过官方的话题,对我来说很清楚 我想用发布我的应用程序,所以我看了一下正式的项目配置 pom.xml的一部分: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> &l

我正在尝试开始spring boot与数据库的集成

我读过官方的话题,对我来说很清楚

我想用发布我的应用程序,所以我看了一下正式的项目配置

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>

可能有几个原因,但实际上取决于您如何定义架构/需求:

inMem DB的访问数据速度更快,您可以使用它来存储临时数据、用户会话信息等内容

db类似于postgres,可以用作补充(同样,取决于您想要/需要什么),以存储更多“静态”、最少使用的信息或简单的数据持久性

同样,根据场景的不同,您可能需要一个、两个或没有

希望有帮助,
塞尔吉奥

我有两例:

  • 测试目的—您可以在进行自动化测试时使用它,这样您就不需要设置“真正的”生产型数据库,而是可以设置hsql并填充它—可以节省大量资源

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


  • 真的很有帮助。谢谢,不过我需要问一下——在我发布的一个例子中,它将如何工作?正如我所看到的,这里没有缓存、用户会话等东西,只是普通的JPA存储库。那么,为什么会有hsql db?快速搜索。。看起来像是默认的hsqldb,但在示例中它被更改为postgres(从src看起来它是唯一被使用的)。我需要编译和测试(现在不能做它..在工作中)。。但是,如果你评论这个依赖关系,它应该会工作(再次..不是100%确定..测试出来)。。。检查:“默认情况下,生成的应用程序会设置Hypersonic内存中数据库。但是,强烈建议在本地使用与生产中相同的数据库。因此,我们将通过此Roo命令将应用程序切换到使用Postgres:”
    # 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