Java 不是自动创建Hibernate架构,而是使用SQL脚本

Java 不是自动创建Hibernate架构,而是使用SQL脚本,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,在我的项目中,我使用h2内存数据库,我希望它不是由Hibernate创建的,而是由SQL脚本创建的。这是我的hibernate.properties 我做了 hibernate.hbm2ddl.auto=none none禁用数据库的自动创建,并添加 hibernate.hbm2ddl.import_files=schema.sql,insert-users.sql schema.sql包含创建schema,然后插入-users.sql的sql代码,它包含初始数据 项目构建成功,但当我尝试访

在我的项目中,我使用h2内存数据库,我希望它不是由Hibernate创建的,而是由SQL脚本创建的。这是我的hibernate.properties

我做了

hibernate.hbm2ddl.auto=none
none禁用数据库的自动创建,并添加

hibernate.hbm2ddl.import_files=schema.sql,insert-users.sql
schema.sql包含创建schema,然后插入-users.sql的sql代码,它包含初始数据

项目构建成功,但当我尝试访问数据库时,我得到了 未找到
异常

以下两条评论与此相关:

This is useful for testing or demoing: by adding INSERT statements for example you can populate your database with a minimal set of data when it is deployed.

我不太确定导入功能是否能满足您的要求。

来自的两条评论与此相关:

This is useful for testing or demoing: by adding INSERT statements for example you can populate your database with a minimal set of data when it is deployed.


我不太确定导入功能是否能满足您的要求。

因为除非您使用
create
create drop
hbm2ddl,否则Hibernate不会为您实现这一点,所以还有其他方法可以实现您的要求

专用工具 有专门为此创建的工具:。这些通常配置为在部署应用程序时运行,并允许您对DB scheme进行版本设置。它们不仅适用于测试(主要不是测试),也适用于生产。他们可以确保所有环境上的方案都是相同的。如果您使用这些工具,那么最好将
hbm2ddl
设置为
validate

春天的支持 不太普遍的方法是使用嵌入式DBs:

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

测试数据
如果目的是创建用于测试的数据(而不是scheme),那么最好创建实体并使用DAO/存储库层在测试中持久化这些数据。这样,您就不会复制持久化数据的机制。

因为除非您使用
create
create drop
hbm2ddl,否则Hibernate不会为您执行此操作,所以还有其他方法可以实现您想要的功能

专用工具 有专门为此创建的工具:。这些通常配置为在部署应用程序时运行,并允许您对DB scheme进行版本设置。它们不仅适用于测试(主要不是测试),也适用于生产。他们可以确保所有环境上的方案都是相同的。如果您使用这些工具,那么最好将
hbm2ddl
设置为
validate

春天的支持 不太普遍的方法是使用嵌入式DBs:

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:test-data.sql"/>
</jdbc:embedded-database>

测试数据
如果目的是创建用于测试的数据(而不是scheme),那么最好创建实体并使用DAO/存储库层在测试中持久化这些数据。这样,您就不会复制持久化数据的机制。

hibernate.dialent=org.hibernate.dialent.h2方言hibernate.connection.driver.class=org.h2.driver hibernate.show_sql=true hibernate.hbm2ddl.auto=none hibernate.connection.url=jdbc:h2:memhelpdeskdb hibernate.hbm2ddl.import_files=schema.sql,insert-users.sqlHere是我的属性,我不知道为什么,但我不能将其添加到帖子中…更正了标题中的错误。突出了一些相关的词语。将错误消息更改为显示为代码,从而显示完整消息(由于用于指示引用的文本而丢失)。Fairy,您如何处理下面的答案?其中一个是在同一天发布的,另一个是在您提出问题的第二天发布的。hibernate.dialogue=org.hibernate.dialogue.h2 dialogue.hibernate.connection.driver.class=org.h2.driver hibernate.show_sql=true hibernate.hbm2ddl.auto=none hibernate.connection.url=jdbc:h2:memhelpdeskdb hibernate.hbm2ddl.import_files=schema.sql,insert-users.sqlHere是我的属性,我不知道为什么,但我无法将其添加到帖子中…更正了标题中的错误。突出了一些相关的词语。将错误消息更改为显示为代码,从而显示完整消息(由于用于指示引用的文本而丢失)。Fairy,您如何处理下面的答案?一个是在同一天发布的,另一个是在你提问的第二天发布的。