I come from php/laravel. Whenever I want to seed the database i only need to run php artisan db:seed
. This will run some php scripts that will insert data into the database.
I want to achieve this same feature using spring/hibernate. I know I can add an import.sql
file to seed the database after schema creation. However, I want to import these fixtures using java and the ORM available so I do not need to maintain an sql.
Is there a way? If not, there should be some configuration to trigger a script that use the ORM entity manager to persist entities in the database after schema creation. The main idea is not to maintain a big sql seeder file over schema revisions.
Thanks!
If you're using Spring data you can use Repository populators .
Otherwise you may register an event that fires after the spring context is loaded :
@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...)
}
}
For more detail check: Better application events in Spring Framework 4.2
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.