gpt4 book ai didi

java - 不是自动创建 Hibernate 模式,而是使用 SQL 脚本

转载 作者:行者123 更新时间:2023-12-01 20:04:02 25 4
gpt4 key购买 nike

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

我做了

hibernate.hbm2ddl.auto=none

none禁用数据库自​​动创建,并添加

hibernate.hbm2ddl.import_files=schema.sql,insert-users.sql

schema.sql 包含用于创建模式的 SQL 代码,然后是 insert-users.sql,它包含初始数据。

项目构建成功,但是当我尝试访问数据库时,我得到<强> Table <tablename> not found异常(exception)。

最佳答案

由于 Hibernate 不会为您执行此操作,除非您使用 createcreate-drop hbm2ddl,因此还有其他方法可以实现您想要的目的。

专业工具

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

Spring的支持

不太普遍的方法是使用 Spring's support对于嵌入式数据库:

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

测试数据

如果目的是创建用于测试的数据(而不是方案),那么最好创建实体并使用 DAO/Repository 层将这些数据保留在测试中。这样您就不会重复持久数据的机制。

关于java - 不是自动创建 Hibernate 模式,而是使用 SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47679561/

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