2016-08-03 50 views
2

我來自php/laravel。無論何時我想要種子數據庫,我只需要運行php artisan db:seed。這將運行一些將腳本插入數據庫的腳本。休眠 - 種子數據庫不使用import.sql

我想用spring/hibernate實現這個功能。我知道我可以添加import.sql文件以在架構創建後爲數據庫播種。不過,我想用java和可用的ORM導入這些裝置,所以我不需要維護一個sql。

有沒有辦法? 如果沒有,應該有一些配置來觸發使用ORM實體管理器在創建模式後將數據庫中的實體持久化的腳本。 主要思想是不要在架構修訂版本上維護一個大型的SQL播種器文件。

謝謝!

+0

使用[ContextLoaderListener的](http://docs.spring.io /spring/docs/current/javadoc-api/org/springframework/web/context/ContextLoaderListener.html)或類似的東西? – 2016-08-03 13:18:56

回答

0

如果您使用Spring數據,則可以使用Repository populators

否則可能註冊觸發該彈簧上下文被加載之後的事件:

@Component 
public class YourListener { 

    // Declare your autowired beans here 

    @EventListener 
    public void handleContextRefresh(ContextRefreshedEvent event) { 
     // Your seeder 
     // + You can use all the registred beans (repositories, services...) 
    } 
} 

對於更詳細的檢查:Better application events in Spring Framework 4.2