如何找出 H2 DB 在内存中运行
Posted
技术标签:
【中文标题】如何找出 H2 DB 在内存中运行【英文标题】:How to find out H2 DB is running in memory 【发布时间】:2014-09-14 17:58:56 【问题描述】:我知道这是非常基本的问题。但我了解到 H2 DB 可以像普通 DB(例如 mysql)一样在内存中运行。我怎样才能知道我的 H2 是在内存中运行的?
Multiple processes can access the same database without having to start the server manually.
To do that, append ;AUTO_SERVER=TRUE to the database URL. You can use the same database URL
independent of whether the database is already open or not. **This feature doesn't work with in-
`memory databases.`**
【问题讨论】:
【参考方案1】:根据我的研究,我发现我们必须更改连接网址才能在内存数据库中使用。
在内存中使用 h2:
<property name="hibernate.connection.url"
value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1" />
在 HDD 上使用 h2:
<property name="hibernate.connection.url"
value="jdbc:h2:~/test;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE"/>
连接 URL 说明:
根据:h2database.com
DB_CLOSE_DELAY=-1
默认情况下,关闭与数据库的最后一个连接会关闭数据库。对于内存数据库,这意味着内容丢失。要保持数据库打开,请将 ;DB_CLOSE_DELAY=-1 添加到数据库 URL。要在虚拟机处于活动状态时保留内存数据库的内容,请使用 jdbc:h2:mem:test;DB_CLOSE_DELAY=-1。
AUTO_SERVER=TRUE
多个进程可以访问同一个数据库,而无需手动启动服务器。为此,请将 ;AUTO_SERVER=TRUE 附加到数据库 URL。无论数据库是否已打开,您都可以使用相同的数据库 URL。此功能不适用于内存数据库。示例数据库 URL:
【讨论】:
以上是关于如何找出 H2 DB 在内存中运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在内存数据库中使用 H2 测试 EntityManager 查询