Fab*_* B. 7 spring hibernate initialization spring-mvc startup
我想在启动时从文本文件填充我的数据库的一些表,我希望仅在我的应用程序启动时调用我的初始化方法.
我使用Spring(+ MVC)和Hibernate与MySQL.
我能怎么做?
sin*_*pop 17
您可以创建一个应用程序监听器,它专门针对这些需求而设计.在这种情况下,它将在每次启动(或刷新)上下文时执行.
@Component
public class DatabaseFillerOnStartup implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
Hibernate附带了一种方法来添加一些带有sql语句的文件,这些语句将在启动时执行.
参数是hibernate.hbm2ddl.import_files.
包含在SessionFactory创建期间执行的SQL DML语句的可选文件的逗号分隔名称.这对于测试或演示非常有用:例如,通过添加INSERT语句,您可以在部署数据库时使用最少的数据集填充数据库.
文件顺序很重要,给定文件的语句在以下文件的语句之前执行.这些语句仅在创建模式时执行,即如果hibernate.hbm2ddl.auto设置为create或create-drop.
例如/humans.sql,/dogs.sql
我喜欢一些提示,这可能只有在"创建"模式下启动休眠时才有效.但我不确定.
在bean内部的某处使用postconstuct注释:
@PostConstruct
public void init() {
//startup logic here
}
Run Code Online (Sandbox Code Playgroud)
可能使(设计)有意义使用配置bean,但它可以是任何bean.