Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 H2内存中数据库初始化与数据_Java_Hibernate_Spring_H2 - Fatal编程技术网

Java H2内存中数据库初始化与数据

Java H2内存中数据库初始化与数据,java,hibernate,spring,h2,Java,Hibernate,Spring,H2,我使用H2和Hibernate动态生成内存中的DB,用于单元测试。 我成功地创建了数据库,一切正常。 但我有一个问题,我不知道如何解决。 在执行测试之前,我需要将参考数据加载到DB进行测试。 我将这些数据排序为SQL insert的文件,我只需要在实时环境中运行一次,但是,因为数据库每次都是从头开始生成的,我需要弄清楚如何在运行时插入数据。 数据非常简单,它是国家列表、州列表等。 最好的方法是什么 顺便说一句,一切都在Spring框架下工作。对于您的测试,您可以在创建连接时执行init脚本 从问

我使用H2和Hibernate动态生成内存中的DB,用于单元测试。 我成功地创建了数据库,一切正常。 但我有一个问题,我不知道如何解决。 在执行测试之前,我需要将参考数据加载到DB进行测试。 我将这些数据排序为SQL insert的文件,我只需要在实时环境中运行一次,但是,因为数据库每次都是从头开始生成的,我需要弄清楚如何在运行时插入数据。 数据非常简单,它是国家列表、州列表等。 最好的方法是什么


顺便说一句,一切都在Spring框架下工作。

对于您的测试,您可以在创建连接时执行init脚本


从问题标签中我看到您正在使用Hibernate。您可以将名为“import.sql”的文件添加到类路径中(即,如果您使用的是Maven项目布局,则在src/main/resources中)

此外,类路径根目录中名为import.sql的文件将 如果Hibernate从头开始创建架构,则在启动时执行 (即如果ddl auto属性设置为create或create drop)。 如果您非常小心,这对于演示和测试非常有用,但是 可能您不希望在生产中使用类路径。 它是一个Hibernate特性(与Spring无关)


我正在尝试做类似的事情,但是我有一个~300MB的持久DB,有很多索引。将其转换为SQL语句并初始化它们将非常缓慢。有没有办法从二进制数据库本身初始化?@HRJ内部我们使用保存在jar文件中的hsqldb数据库。但是,我没有用如此大量的数据对其进行测试。而且,由于有些人现在可能已经知道了这一点,如果您还没有“console”H2端点来管理数据库,您可以将属性
spring.H2.console.enabled=true
添加到.properties(或.yml)文件中,您将能够访问端点“H2 console”。对于内存中的数据库,必须将“JDBCURL”更改为
JDBC:h2:mem:testdb
。无需密码,只需点击“连接”。我写这篇文章是因为我发现当我的初始化查询失败时,这有助于查看数据库的结构。例如,我实际上需要将文件命名为“data.sql”,而不是“import.sql”。