จาก Release note ของ Spring Boot 2.5 นั้น
พบว่ามี feature เกี่ยวกับการจัดการลำดับการทำงาน
ของการ initial data ใน Database มาใหม่
ซึ่งเปลี่ยนจาก Milestone version ไปเลย
จึงทำการสรุปการทำงานและใช้งานไว้นิดหน่อย
ขั้นตอนในการ initial data ใน database เป็นดังนี้
- ถ้ามี ไฟล์ schema.sql และ data.sql จะทำงานเป็นอันดับแรก เหมือนกับการทำงานของ DB migration เช่น Flyway และ Liquibase
- ต่อมาจึงทำงานกับพวก ORM เช่น JPA หรือ hibernate
ดังนั้นในการทำงานนั้น บ่อยครั้งต้องการให้ ORM ทำงานก่อน
ยกตัวอย่างเช่นใช้งาน Spring Data JPA
เพื่อให้ทำการสร้าง table ต่าง ๆ ขึ้นมาก่อน
จากนั้นจึงทำการ initial data ใน table ด้วยไฟล์ data.sql
ซึ่งสามารถ config ได้ในไฟล์ application.properties ดังนี้
แต่ถ้าไม่ต้องการไม่ให้ทำการ execute ไฟล์ data.sql และ schema.sql แล้ว
สามารถปิดการทำงานได้เช่นกัน ดังนี้
หรือแม้แต่ในการ initial bean ต่าง ๆ ที่ใช้งาน @Bean
ต้องการให้ทำงานหลังจากการ initial table แล้วเท่านั้นจริง ๆ
ก็เพิ่ม annotation @DependsOnDatabaseInitialization ได้เลย
จากความสามารถเหล่านี้ น่าจะทำให้ง่ายและสะดวกมากยิ่งขึ้น