gpt4 book ai didi

java - 保持内存数据库打开直到 JVM 退出

转载 作者:行者123 更新时间:2023-12-02 05:04:19 26 4
gpt4 key购买 nike

我想保留一个内存 SQLite 数据库,但没有附加连接。我正在对一个 Web 应用程序进行单元测试,因此在 @BeforeAll 方法中我初始化,然后在各种测试方法 DDL 操作中进行初始化。当最后一个连接关闭时,内存数据库中的 SQLite 被丢弃,破坏了我的测试。

我实现了在 JVM 运行时保持内存数据库中的 H2 保持打开状态:

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1

但我找不到 SQLite 的方法。我尝试过:

jdbc:sqlite::memory:&cache=shared

但是不起作用。可能吗?

最佳答案

由于单元测试应该是彼此独立的,我建议不要这样做。根据您使用的底层框架,您可能希望使用注释来驱动初始化和拆卸 SQL 的执行。例如,对于 Spring,您可以使用以下内容:

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#spring-testing-annotation-sql

如果您无法使用注释或确实决心继续走这条路(上下文就是一切:您可能完全有充分的理由),一种可能是在您的 @BeforeAll 中打开一个附加连接> 方法,然后您可以在 @AfterAll 方法中手动关闭该方法。由于这将是由您的代码单独管理的附加连接,因此 sqlite 会被欺骗,在 @AfterAll 方法执行之前不执行清理操作。

如果您希望这是在 JVM 级别,您可以使用类的静态初始化程序...

关于java - 保持内存数据库打开直到 JVM 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com