12 Mayıs 2018 Cumartesi

Spring Boot ile Veri Tabanına İlk Verileri Ekleme

Önceki yazımızda oluşturduğumuz örnek projede

spring.jpa.hibernate.ddl-auto = update

özelliği ile veritabanı şemasının Hibernate tarafından otomatik oluşturulmasını sağlamıştık. Fakat, çoğu zaman veri tabanı şemasının oluşturulması yeterli olmayıp, uygulamanın kullanılabilmesi için bazı ilk verilerin de eklenmiş olması gerekmektedir. Bu yazımızda uygulama ayağa kalkarken uygulama içinden ilk verilerimizi nasıl kaydedeceğimizi göreceğiz.

Veri tabanımıza veri kaydetmenin çeşitli yöntemleri vardır. SQL script dosyaları hazırlayıp, bu scriptleri çalıştırarak da veri tabanımızı doldurabiliriz. Fakat kullandığımız veri tabanına göre değişik scriptler hazırlamamız gerekebilir. Örneğin, MySQL ile çalışırken hazırladığımız scriptleri, Oracle veya başka bir veri tabanı kullanmaya karar verdiğimizde tekrar yazmamız gerekebilir. Hibernate teknolojisi bizi kullandığımız veri tabanı teknolojisinden soyutluyorken neden bunu ilk veri kaydederken de kullanmayalım?

Spring Boot Data JPA teknolojisini kullanarak oluşturduğumuz Repository'leri kullanarak, ApplicationReadyEvent'i dinleyen ApplicationListener beanlerimiz ile uygulama ayağa kalktığında veri atacağımız tabloyu kontrol edeceğiz. Eğer boşsa, eklemek istediğimiz entityleri oluşturup kaydedeceğiz.

Bu sınıflarımıza Data Populating Unit (Dpu) diyebiliriz. Uygulamamız ayağa kalktığında dog, bird, cat tipleri hâl-i hazırda eklenmiş olsun istiyoruz. 

Birden fazla Dpu çalıştırmak istediğimizde dpu'ların çalışma sırası önem kazanıyor. Örneğin, dog tipinde Pet kaydedeceğimiz PetDpu çalıştırmak istiyorsak, öncelikle dog PetType nesnesinin veri tabanında kayıtlı olduğundan emin olmalıyız. Bu nedenle PetTypeDpu sınıfımızın, yazacağımız PetDpu'dan önce çalışması için @Order anotasyonu ile sıra belirliyoruz.


Tüm örnek proje kodunu Github'da şuradan indirebilirsiniz.

Hiç yorum yok:

Yorum Gönder

Komut Satırından Google'lamak

googler isimli komut satırı aracı ile terminalden google aramaları yapabilir, sonuçlar üzerinde dolaşabilirsiniz. Ubuntu makinenize kurm...