Java Spring Hibernate MySQL初始化
我试图弄清楚SpringHibernate和MySQL的关系。我的目的是,当我启动程序时,它在类路径中执行Java Spring Hibernate MySQL初始化,java,mysql,spring,hibernate,spring-mvc,Java,Mysql,Spring,Hibernate,Spring Mvc,我试图弄清楚SpringHibernate和MySQL的关系。我的目的是,当我启动程序时,它在类路径中执行import.sql文件。我希望在不破坏现有表的情况下执行此操作。我找到了一些关于启动时执行sql文件的文档 官方的春季医生说 此外,类路径根目录中名为import.sql的文件将在启动时执行 但是,Spring会销毁我的表,然后执行import.sql文件。有没有一种方法可以在不丢失现有数据的情况下执行.sql文件 在下面的问题中,他几乎想要和我一样的东西 但是 仅当hbm2ddl.a
import.sql
文件。我希望在不破坏现有表的情况下执行此操作。我找到了一些关于启动时执行sql文件的文档
官方的春季医生说
此外,类路径根目录中名为import.sql的文件将在启动时执行
但是,Spring会销毁我的表,然后执行import.sql文件。有没有一种方法可以在不丢失现有数据的情况下执行.sql文件
在下面的问题中,他几乎想要和我一样的东西
但是
仅当hbm2ddl.auto设置为create或create drop时,此选项才起作用
我找了很多,但找不到办法。长话短说,如何在启动时运行.sql语句而不破坏数据库 我终于可以找到我自己问题的答案了。我在我的项目中使用了基于java的配置。互联网上与spring相关的大多数示例都使用基于xml的配置,我很难找到问题的答案 幸运的是,我看到了这个问题 答案是 数据源初始化器 它就像一个符咒 下面是在启动时运行SQL语句而不破坏现有数据库的代码段
@Bean
public DataSourceInitializer dataSourceInitializer() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
resourceDatabasePopulator.addScript(new ClassPathResource("/data.sql"));
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
dataSourceInitializer.setDataSource(dataSource());
dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator);
return dataSourceInitializer;
}
我终于可以找到我自己问题的答案了。我在我的项目中使用了基于java的配置。互联网上与spring相关的大多数示例都使用基于xml的配置,我很难找到问题的答案 幸运的是,我看到了这个问题 答案是 数据源初始化器 它就像一个符咒 下面是在启动时运行SQL语句而不破坏现有数据库的代码段
@Bean
public DataSourceInitializer dataSourceInitializer() {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
resourceDatabasePopulator.addScript(new ClassPathResource("/data.sql"));
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
dataSourceInitializer.setDataSource(dataSource());
dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator);
return dataSourceInitializer;
}
再多读一点。。。不要使用Hibernate或JPA来初始化数据库,只需使用JDBC即可。改为添加一个
data.sql
。您可以将数据的填充放在应用程序范围内的非惰性初始化bean中(并从那里运行本机sql查询)…好的,在配置Hibernate时,您可以要求它以属性create drop
在每个开头重新创建数据库架构。请确保将其设置为至多validate
@M.Deinum,我阅读了该部分,并进行了更改,但它没有执行data.sql文件。这是我所做的改变application.properties
spring.datasource.initialize=true-spring.datasource.data=classpath:data.sql hibernate.hbm2ddl.auto=和src/main/resources文件夹中的mydata.sql
文件,如application.properties
文件。您无需更改任何内容,只添加一个数据。sql
其他一切都可以保持原样。默认情况下将执行该文件。另外,请不要添加代码,因为注释可以改善您的问题。请进一步阅读。。。不要使用Hibernate或JPA来初始化数据库,只需使用JDBC即可。改为添加一个data.sql
。您可以将数据的填充放在应用程序范围内的非惰性初始化bean中(并从那里运行本机sql查询)…好的,在配置Hibernate时,您可以要求它以属性create drop
在每个开头重新创建数据库架构。请确保将其设置为至多validate
@M.Deinum,我阅读了该部分,并进行了更改,但它没有执行data.sql文件。这是我所做的改变application.properties
spring.datasource.initialize=true-spring.datasource.data=classpath:data.sql hibernate.hbm2ddl.auto=和src/main/resources文件夹中的mydata.sql
文件,如application.properties
文件。您无需更改任何内容,只添加一个数据。sql
其他一切都可以保持原样。默认情况下将执行该文件。另外,请不要添加代码,因为注释可以改善您的问题。