【问题标题】:Hibernate - Seed database without using import.sqlHibernate - 不使用 import.sql 的种子数据库
【发布时间】:2016-12-09 05:51:44
【问题描述】:

我来自 php/laravel。每当我想为数据库播种时,我只需要运行php artisan db:seed。这将运行一些将数据插入数据库的 php 脚本。

我想使用 spring/hibernate 实现同样的功能。我知道我可以在创建模式后添加一个import.sql 文件来为数据库播种。但是,我想使用 java 和可用的 ORM 导入这些固定装置,因此我不需要维护 sql。

有办法吗? 如果没有,应该有一些配置来触发一个脚本,该脚本使用 ORM 实体管理器在模式创建后将实体持久保存在数据库中。 主要思想是不要在架构修订上维护一个大的 sql 种子文件。

谢谢!

【问题讨论】:

标签: java spring hibernate seeding


【解决方案1】:

如果您使用 Spring 数据,您可以使用 Repository populators。

否则你可能会注册一个在 spring 上下文加载后触发的事件:

@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2017-02-15
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 2013-01-25
    • 2018-04-28
    相关资源
    最近更新 更多