Java 如何从文件(populate.sql)在内存数据库中填充H2?
我想将H2内存数据库添加到我的Spring MVC应用程序中。对于ORM,我使用Hibernate。这是我的配置: [hibernate.cfg.xml]Java 如何从文件(populate.sql)在内存数据库中填充H2?,java,spring,hibernate,h2,Java,Spring,Hibernate,H2,我想将H2内存数据库添加到我的Spring MVC应用程序中。对于ORM,我使用Hibernate。这是我的配置: [hibernate.cfg.xml] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibe
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:~/myDB</property>
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">qwerty</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping class="de.alf.h2.entity.Student"/>
</session-factory>
</hibernate-configuration>
如何在我的代码中做到这一点?您可以使用JDBC名称空间
xmlns:JDBC=”http://www.springframework.org/schema/jdbc“
然后您可以将嵌入式数据库添加为
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:db/schema.sql"/>
<jdbc:script location="classpath:db/test-data.sql"/>
</jdbc:embedded-database>
然后在JDBCTemplate或JPA中与hibernate一起使用此数据源,您可以使用JDBC名称空间
xmlns:JDBC=”http://www.springframework.org/schema/jdbc“
然后您可以将嵌入式数据库添加为
<jdbc:embedded-database id="dataSource">
<jdbc:script location="classpath:db/schema.sql"/>
<jdbc:script location="classpath:db/test-data.sql"/>
</jdbc:embedded-database>
然后在JDBCTemplate中使用此数据源,或者在JPA中与hibernate一起使用此数据源,如果
hbm2ddl.auto
设置为create
,hibernate
将在SessionFactory
创建期间从映射类生成DDL。您还可以将名为import.sql
的文件添加到类路径以导入一些数据
如果您使用M2进行测试,并且希望自己进行测试,还可以使用H2
功能:
jdbc:h2:~/myDB;INIT=runscript from '~/resource/db/data.sql'
**请注意,
data.sql
的路径可能不同。如果hbm2ddl.auto
设置为create
,Hibernate
将在会话工厂创建期间从映射类生成DDL。您还可以将名为import.sql
的文件添加到类路径以导入一些数据
如果您使用M2进行测试,并且希望自己进行测试,还可以使用H2
功能:
jdbc:h2:~/myDB;INIT=runscript from '~/resource/db/data.sql'
**请注意,data.sql
的路径可能不同。您需要填充db还是创建db?我需要填充db。您需要填充db还是创建db?我需要填充db。我现在遇到一个异常,数据库可能已经在使用:“被另一个进程锁定”。可能的解决方案:关闭所有其他连接;使用服务器模式[90020-176]
似乎数据库已经在运行或其他什么。试着终止进程,我终止了它。现在好了。但是我应该在哪里添加jdbc:h2:~/myDB;INIT=runscript来自“~/resource/db/data.sql”
?要hibernate.cfg.xml
?jdbc:h2:~/myDB;INIT=runscript from'~/resource/db/data.sql'请看,我现在收到一个异常数据库可能已经在使用中:“被另一个进程锁定”。可能的解决方案:关闭所有其他连接;使用服务器模式[90020-176]
似乎数据库已经在运行或其他什么。试着终止进程,我终止了它。现在好了。但是我应该在哪里添加jdbc:h2:~/myDB;INIT=runscript来自“~/resource/db/data.sql”
?要hibernate.cfg.xml
?jdbc:h2:~/myDB;INIT=runscript来自“~/resource/db/data.sql”请参阅
jdbc:h2:~/myDB;INIT=runscript from '~/resource/db/data.sql'