【问题标题】:Spring JPA Repository - Keep data on server restartSpring JPA Repository - 在服务器重启时保留数据
【发布时间】:2015-07-17 11:19:00
【问题描述】:

我目前正在尝试学习如何使用 Spring Boot,但遇到了一个不知道如何解决的问题。

我已按照http://spring.io/guides/gs/accessing-data-jpa/ 的指南进行操作,一切正常。但是,如果我重新启动服务器,则保存的所有数据都将完全丢失。有什么方法可以将数据保存在存储库/数据库中,这样如果我关闭应用程序并重新启动它,之前保存的所有数据仍然可以访问?

提前谢谢你:)

【问题讨论】:

  • 在退出时将数据序列化到文件并在加载时反序列化以使应用程序恢复到最后状态。
  • 当你使用数据库时,数据序列化是你能做的最糟糕的事情。这里的问题只是缺少理解,示例中使用的数据库是如何工作的。

标签: java spring jpa spring-boot


【解决方案1】:

所有示例都使用具有内存持久性的嵌入式数据库,这意味着,只要进程正在运行,数据就会被存储。只需切换到 MySQL 等常规数据库或使用 H2 和基于文件的存储 url,它也永久保存在您的磁盘上。对于后者,只需将以下属性添加到您的 application.properties:

spring.datasource.url=jdbc:h2:tcp://localhost/${path/to/your/db/file}

并将${path/to/your/db/file}替换为您要存储数据库的路径(注意,您在此处配置的文件夹将被创建,如果它不存在)。

【讨论】:

  • 该示例没有 application.properties 文件,我将在哪里添加它以及如何实现它?而且我不知道如何更改使用的数据库,我必须做一些研究并弄清楚。
  • application.properties 可以在很多地方,请查阅 Spring Boot 文档:docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/… 我会将其作为默认配置文件放在 src/main/resources 下。
  • 感谢您的回答
【解决方案2】:

您的 application.properties 文件似乎具有以下设置。删除或评论它。

spring.jpa.hibernate.ddl-auto=create

【讨论】:

  • 我在我的属性文件中将spring.jpa.hibernate.ddl-auto 设置为none,并通过我的src/main/resources 文件夹中的schema.sql 管理架构。例如spring.jpa.hibernate.ddl-auto = none
【解决方案3】:

我在我的项目中使用了这个,我想在服务器重启后保留数据。

spring.datasource.url=jdbc:h2:file:~/data/testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;

这会将数据存储在文件中。详情可查看http://www.h2database.com/html/features.html

【讨论】:

    【解决方案4】:

    如果您想在服务器重启时保留数据,请将以下属性添加到 application.properties 文件中:

    `spring.jpa.hibernate.ddl-auto=update`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2023-04-03
      • 2020-07-22
      • 2016-01-12
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多