Güncelleme, dışa aktarma ve hibernate.hbm2ddl.auto
<br>'ye verilebilecek değerler hakkında gerçekten daha fazla bilgi edinmek istiyorum;
Güncellemeyi ne zaman kullanacağımı ve ne zaman kullanmayacağımı bilmem gerekiyor? Ve alternatifi nedir?
Bunlar DB üzerinde meydana gelebilecek değişikliklerdir:
Her durumda en iyi çözüm nedir?
Topluluk belgelerinden]1:
hibernate.hbm2ddl.auto SessionFactory oluşturulduğunda şema DDL'sini otomatik olarak doğrular veya veritabanına aktarır. create-drop ile, SessionFactory açıkça kapatıldığında veritabanı şeması bırakılacaktır.
örn. doğrula | güncelle | oluştur | oluştur-bırak
Yani olası seçenekler listesi şöyledir,
Bu seçenekler geliştirici araçları olarak tasarlanmış gibi görünüyor ve herhangi bir üretim seviyesi veritabanını kolaylaştırmak için değil, aşağıdaki soruya bir göz atmak isteyebilirsiniz; Hibernate: hbm2ddl.auto=update in production?
Yapılandırma özelliği hibernate.hbm2ddl.auto
olarak adlandırılır
Geliştirme ortamımızda hibernate.hbm2ddl.auto=create-drop
seçeneğini her dağıtımda temiz bir veritabanı oluşturacak şekilde ayarladık, böylece veritabanımız bilinen bir durumda olacaktı.
Teorik olarak, modelinizdeki değişikliklerle veritabanınızı güncellemek için hibernate.hbm2ddl.auto=update
ayarını yapabilirsiniz, ancak bir üretim veritabanında buna güvenmezdim. Belgelerin önceki bir sürümünde bunun en azından deneysel olduğu söyleniyordu; şu anki durumu bilmiyorum.
Bu nedenle, üretim veritabanımız için hibernate.hbm2ddl.auto
ayarını yapmayın - varsayılan değer veritabanı değişikliği yapmamaktır. Bunun yerine, bir sürümden diğerine değişiklikleri uygulayan bir SQL DDL güncelleme komut dosyasını manuel olarak oluştururuz.
Ben olsam db'nizi güncellemek için liquibase kullanırdım. hibernate'in şema güncelleme özelliği sadece yeni özellikler geliştiren bir geliştirici için uygundur. Bir üretim durumunda, db yükseltmesinin daha dikkatli bir şekilde ele alınması gerekir.