Java için Geçişler


86

Hem Ruby on Rail hem de Java kullanıyorum. Bir ray projesi üzerinde çalışırken geçişleri kullanmaktan gerçekten keyif alıyorum. bu yüzden Java için bir araç gibi bir geçiş var mı merak ediyorum? Böyle bir araç yoksa, bir Java projesi tarafından kullanılan bir veritabanını kontrol etmek için geçişleri bir araç olarak kullanmak iyi bir fikirdir?

Yanıtlar:


9

Hibernate'in SchemaUpdate'i geçişlerle aynı işlevi gerçekleştirmek için kullandım. Aslında taşımalardan daha kolaydır çünkü uygulamanızı her başlattığınızda, veritabanı yapısını inceler ve onu eşlemelerinizle senkronize eder, böylece fazladan komisyon yoktur: db: geçiş adımı ve uygulamanız, çalıştığı veritabanıyla hiçbir zaman senkronizasyon dışı kalmaz. karşısında. Hazırda bekletme eşleme dosyaları, Rails geçişlerinden daha karmaşık değildir, bu nedenle uygulamada Hazırda Bekletme özelliğini kullanmasanız bile bundan yararlanabilirsiniz. Olumsuz tarafı, geri alma, aşağı taşıma, DML ifadelerini çalıştırma kadar esnek olmamasıdır. Yorumlarda belirtildiği gibi, tabloları veya sütunları da düşürmez. Hazırda bekletme başlatma işleminin bir parçası olarak bunları manuel olarak yapmak için ayrı bir yöntem çalıştırıyorum.

Rails geçişlerini neden kullanamadığınızı anlamıyorum - yığını (Ruby, Rake, Rails) yüklemekten çekinmediğiniz sürece, uygulamanıza dokunmanıza gerek kalmaz.


22
% 100 senkronize etmez. Sütunları değiştirmez, sütunları veya tabloları silmez, FK'leri kaldırmaz vb.
cherouvim

89

Bir İçin özellik karşılaştırması arasında

  • Uçuş yolu
  • Liquibase
  • c5-db-geçiş
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • Otomatik yama

http://flywaydb.org adresine bir göz atın

Bu, sizin ve başkalarının iş için doğru aracı seçmesi için iyi bir başlangıç ​​olmalıdır.


2
Hey, Flyway'in farkında değildim. Oldukça ilginç görünüyor ve ona daha yakından bakacağım. Flyway'den bahsettiğiniz için teşekkürler!
Pascal Thivent

@Pascal Thivent Yorumunuz için teşekkürler! Eğer değerlendirirseniz, bu konudaki fikrinizi / eleştirinizi / önerilerinizi duymaktan memnuniyet duyarım, burada ya da Flyway'in sorun izleyicisinde :-) harika göründüğü için karşılaştırma matrisine DbMaintain'i eklemeyi de inceleyeceğim rakip ...
Axel Fontaine

Tabi ki yapacağım. Ve karşılaştırmaya DbMaintain'i eklediğiniz için teşekkürler, böyle bir matrise sahip olmak çok güzel.
Pascal Thivent

3
Bunu gönderdiğiniz için teşekkürler. Flyway'i bugün kullanmaya başladım. Daha önce likibaz kullandım ve bir projede kendi çözümlerini sundular. Flyway, likibaz olmasını beklediğim şeydi. Basit, xml yok ve java'da daha karmaşık geçişler yazabilirim. Mükemmel. Karınca desteğini dört gözle bekliyorum.
nogridbag

1
Web sitesinin mevcut sürümü sadece Flyway, Liquibase ve MyBatis'i karşılaştırıyor gibi görünüyor. Karşılaştırmanın tamamı başka bir yerde hala mevcut mu?
Zero3



6

Aynı soruyu araştırırken bu yazıya rastladım. Henüz en iyi araç veya yaklaşım hakkında herhangi bir sonuca varmadım , ancak şimdiye kadar başka cevaplarda belirtilmeyen karşılaştığım bir araç dbdeploy . Bu araçların herhangi bir karşılaştırmasını okumak isterim.

Konuyla ilgili diğer kaynaklar: Martin Fowler ve üzerinde Pramod Sadalage en biraz yaşlı sonrası Evrimsel Veritabanı Tasarım ve kitap Refactoring Veritabanları: Evrimsel Veritabanı Tasarım Sadalage ve Scot Ambler tarafından.


6

Java için ray benzeri geçişlerin iki bağımsız uygulaması da vardır:

1) Carbon Five'dan Maven tabanlı göçler

2) Hashrocket'ten karınca tabanlı görevler (kişisel favorim)

Bu paketler özellikle Maven ve Ant için yazılmış olsa da, bazı çalışmalarla bunları hemen hemen her şeye uyarlayabilirsiniz.


5
Hashrocket'e 2007'den beri dokunulmadı. Carbon Five'ın c5-db-migration ürünü 2010'dan beri güncellenmedi.
Green

4

Migrate4j bir aday gibi görünüyor, ancak proje üretim kullanımı için yeterince olgun görünmüyor.


2

Ayrıca, başlangıçta Unitils içinde geliştirilmiş , ancak şimdi özel bir proje olan DbMaintain de var . Şu anda kullanıyoruz ve çok memnunuz (bu, iyi bir alternatif olmadığı anlamına gelmez). Bunlardan daha fazlasını veritabanı + geçiş yer imlerimde listeliyorum (Maven'i destekleyen araçlara odaklanarak).


1
Bunun gibi araçlar daha hızlı ve güvenli bir şekilde geliştirmemize yardımcı olacak
Arthur Ronald

@Arthur Evet, bunun gibi araçlarımızın da olması çok iyi bir şey. Şema güncellemelerini bir ortamdan diğerine basamaklamak artık bizim için bir zevk :)
Pascal Thivent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.