Uygulama bir makinede ilk defa çalıştırıldığında, Hazırda Beklet'in tüm tablo şemalarını oluşturduğu bir uygulamam var. Bu güzel çalışıyor.Hibernate'in otomatik şema oluşturma ve veritabanı sürüm oluşturma özelliğini birleştirin
Şimdi, Hibernate'in veritabanını sürüm denetimi altında tutmak için bir çeşit mekanizmaya sahip olup olmadığını merak ediyorum, örneğin, uygulamanızın farklı bir sürümünü çalıştırdığımda Hibernate, bir şemayı diğerine nasıl geçireceğimi bilir ve Hazırda Bekletme farklı bir veritabanı bulur eski bir sürümü mevcut şema? Hibernate'in varolan şemayı okuyabileceğini ve şemayı haritalandırma açıklamasında karşılaştırabileceğini düşünürsek, bunun mümkün olabileceğini düşünüyorum. Ancak, hazırda bekletme komutları oluştururken olduğu gibi, eski verileri Google'a taşımaya nasıl anlatabileceğimi bilmiyorum. Liquibase/Flyway.
Hazırda bekletme ve sürüm oluşturma, denetleme ve alan sürümleme konusunda birçok isabet göstereceğinden, doğru şeyleri kullanmayabilirdim ancak Liquibase/Flyway tür sürümleri açısından daha fazlasını düşünüyorum. Her ikisini birlikte düşünmedim, fakat Hazırda Bekletme komut dosyaları oluşturmaz, ancak veritabanını doğrudan manipüle ettiğinden, her ikisinin birlikte nasıl çalışacağını bilemezdim.
Bu, hazırladığımda, kendi yazımlarımı yazmak yerine Hibernate'in şemayı oluşturmasına izin verdiğim ilk sefer. Ben manuel script oluşturma ekstra sıkıcı yapan Hibernate Envers yararlanmak için bunu yapıyorum. Belki bariz bir şey eksik. Bu konudaki herhangi bir giriş için teşekkürler! Güncelleştirme: Bugün Flyway'in geliştiricisi ile konuşmalıyım ve bana iyi bir çözüm bilmeyeceğini söylemişti. Belki hiçbir şey yok mu?
Hibernate, bunu yapmaya çalışacak bir "update" hbm2ddl.auto değerine sahiptir, ancak güvenilir değildir. Hazırda bekletme deneyimlerimde, bu şema güncelleştirmelerinin her zaman elle yazılan şema güncelleme sql komut dosyaları kullanılarak ele alınması gerekir.Genelde uygulamanın kullandığı db kullanıcısı, bu durumda sizin durumunuza uygun olmasa bile, oluşturma/bırakma ayrıcalıklarına sahip olmamalıdır. – Taylor
Benim düşünceme göre, şema yazımı, Java nesnelerini uygulayarak zaten tanımlanmış bir etki alanı modelini simly olarak yansıttığından, bir çeşit kod çoğaltmasıdır. Genellikle, bu çoğaltma o kadar pahalı değil, ama Envers ile. Bu yüzden bunun için bir çözümüm olmasını isterdim. Hangi bağlamda hbm2dll.auto yetersiz kalıyordu. Özel bir Flyway göçmenini uygulamak için harika bir giriş noktası olabilir. –
Neredeyse her bağlam. Mevcut sütunların yeniden düzenlenmesi veya "tek bir varsayılan değere sahip sütun ekle" veya "bu sütunu kaldır" dışındaki herhangi bir değişiklik, hazırda bekletme için hazırda bekletme yeteneğinin ötesindedir. – Taylor