SORU
4 NİSAN 2009, CUMARTESİ


Hazırda Beklet, iBatis, Java EE veya başka bir Java ORM aracı

Büyük, kurumsal bir uygulama planlama aşamasındayız. J2EE acıları yaşadıktan sonra Hazırda değerlendirerek çalışmalarımıza odaklanıyoruz.

Yeni Java EE API daha kolay gibi görünüyor. Ayrıca Hazırda Beklet ve iBatis hakkında iyi şeyler okudum. Ekibimiz çerçeveler ile çok az deneyime sahip.

Karar vermek istiyorum 5 ana comparisong noktaları vardır

  • Öğrenme Eğrisi Kullanım Kolaylığı/
  • Verimlilik
  • İdame İstikrar/
  • Performans/Ölçülebilirlik
  • Sorun Giderme kolaylığı

Eğer J2EE deneyimi olan ~6 geliştirici ekibi yönetmek olsaydın hangi ORM aracı ve neden kullanmak istiyorsunuz?

CEVAP
4 NİSAN 2009, CUMARTESİ


Bana bir çatlak atalım. İlk, Using an ORM or plain SQL? bu konuda yazdım. Özellikle noktaları adres için:

Öğrenme Eğrisi Kullanım Kolaylığı/

İbatis hakkında SQL. Eğer SQL biliyorsanız ibatis için öğrenme eğrisi saçmadır. İbatis SQL gibi üst üste bazı şeyler gibi

  • grup tarafından;
  • ayrımcılık türleri;
  • dinamik SQL.

hala öğrenmek gerekir ama en büyük engel SQL.

Öte yandan JPA Hazırda içerir) SQL kendisini mesafe ve ilişkisel bir yol yerine, bir nesne, bir şeyler sunmak için çalışır. Joel ancak puan olarak, abstractions are leaky ve JPA bir istisna değildir. Yapmak için hala ilişkisel modeller, SQL, performans sorgular ayarlama ve benzeri hakkında bilmeniz gerekir JPA.

İbatis sadece SQL uygulamak zorunda biliyor ya da öğreniyor olacak ise, JPA başka bir şey bilmek gerekir: nasıl (ya da XML veya ek açıklama) yapılandırmak için. Bu yani bulmaktan yabancı anahtar ilişkileri olan bir ilişki bire-bir, bir-çok veya çok-çok) bir tür, bu tür eşleme, vb.

Eğer SQL biliyorsanız JPA öğrenme engeli aslında daha yüksek olduğunu söyleyebilirim. Eğer ... Eğer, JPA etkili bir şekilde bir süre için öğrenme SQL erteleme için izin ile karışık bir sonuç (ama süresiz ertelendi değil).

Sizin varlıklar kur ve ilişkilerini daha sonra bir kez JPA ile diğer geliştiriciler sadece onları kullanabilir ve JPA yapılandırma hakkında her şeyi öğrenmeye gerek yok. Bu bir avantaj olabilir ama bir geliştirici hala varlık yöneticileri, işlem yönetimi, yönetilen vs yönetilmeyen nesneler hakkında bilmek ve böylece gerekir.

JPA ya da SQL biliyorsun olup olmadığını öğrenmek gerekir kendi sorgu dili (JPA-SQL), bu fazlalaştı. JPA-SQL sadece SQL şeyler yapamaz durumlar bulacaksınız.

Verimlilik

Bu yargıç için de hiç kolay değil. Şahsen ibatis daha verimli olduğumu ama aynı zamanda SQL ile çok rahat olduğumu düşünüyorum. Bazı Uyku ile daha verimli bir şekilde tartışılır ama bu en azından kısmen de olsa olmayışından için--SQL muhtemelen nedeniyle.

Ayrıca verimlilik ile JPA olduğunu aldatıcı olacaksınız çünkü bazen rastlamak bir sorun ile veri modeli veya sorgulayan alır yarım gün için bir gün için çözmek gibi sen aç günlüğünü ve ne izlemek SQL JPA provider üretim ve çalışma kombinasyonu ayarları ve aramaları almak için bir şeyler üretmek bu hem doğru ve ölçülebilir.

Sadece SQL Kendin yazmışsın çünkü İbatis ile bu tür bir sorun yok. Bu PL/SQL Geliştirici içindeki SQL çalıştırarak, SQL Server, MySQL. ya da her neyse Management Studio test. Sorgu hemen sonra, yaptığınız tüm giriş ve çıkışları eşleme.

Ayrıca JPA-QL saf SQL daha garip bir şey buldum. Sadece sonuçları görmek için JPA-QL bir sorgu çalıştırmak için ayrı araçlara ihtiyaç duyar ve öğrenmen gereken bir şey daha var. Aslında JPA bütün bu kısmında bazı insanlar aşk için olsa da biraz garip ve hantal bulundu.

İdame İstikrar/

Tehlike ile İbatis burada çoğalması anlamı dev team sadece devam katma değer nesneleri ve sorgular gibi ihtiyaçları var onları yerine isteyen kişileri ise JPA bir entitty başına masa ve bir zamanlar var olan varlık, bu kadar. Adlı sorgular, varlık üzerine gitmek eğilimindedir bu yüzden kaçırmak zordur. Ad-hoc sorgular tekrarlanabilir ama potansiyel bir sorun daha az olduğunu düşünüyorum.

Bu sertlik pahasına ancak gelir. Bir uygulama genellikle farklı tablolardan veri bit ve parçaları gerekir. SQL kolaydır çünkü yazabilirsiniz tek bir sorgu (veya az sayıda sorgu) tüm bu verileri bir hit koyun içinde özel bir değer nesnesi sadece bu amaç için.

JPA ile iş katmanı içine mantık hareket ediyorsunuz. Kuruluşlar temelde hep ya hiç. Şimdi bu tam olarak doğru değil. Çeşitli JPA sağlayıcı, kısmen varlıkları yüklemek için izin verir, ve benzeri, ama aynı ayrık entitites bahsediyorsun. Eğer 4 tablodan veri ihtiyacınız varsa ya da 4 varlıkları lazım ya da özel değeri bir tür içine istediğiniz verileri birleştirmek gerekir iş veya sunum katmanı nesne.

Hakkında ibatis gibi bir şey tüm SQL harici (XML dosyaları). Bazı bu ama ben değil bir dezavantaj olarak görecekler. Sonra bir tablo ve/veya sütun kullanır nispeten kolay XML dosyaları arayarak bulabilirsiniz. SQL kodu (veya SQL hiç yeri olmadığı halde) gömülü bir sürü bulmak daha zor olabilir. Ayrıca bir veritabanı aracı SQL yapıştırın ve çalıştırın. Bu yıllar boyunca benim için faydalı oldu ne kadar abartmak istemiyorum.

Performans/Ölçülebilirlik

Burada ibatis eller aşağı kazanır bence. Düz SQL ve düşük maliyet. Doğası gereği JPA sadece gecikme ya da işlem hacmi aynı seviyede yönetmek mümkün olmayacak. Şimdi ne var gecikme süresi ve işlem hacmi nadiren sorunları var. Yüksek performanslı sistemler ancak ve JPA gibi daha ağır çözümler hoşnutsuzluğun eğiliminde olacaktır.

Artı ibatis ile tam olarak istediğiniz verileri döndüren bir sorgu yazabilirsiniz tam ihtiyacın sütunlar istiyorum. Temelde JPA ayrık varlıklar dönen zaman (hatta maç) yenebilir yolu yok.

Sorun Giderme kolaylığı

Bunu da İbatis için bir kazanç olduğunu düşünüyorum. Yukarıda bahsettiğim gibi, JPA olur bazen harcamak yarım günlük bir sorgu veya kurumun ürettiği SQL istiyorsanız veya teşhis sorun nerede bir işlem başarısız olur çünkü varlık yöneticisi için geçerli bir yönetilmeyen nesne (hangi olabilir Bölüm toplu iş nerede işlediniz bir sürü iş olabilir saçma buluyorum).

İkisi de iyi olan var olmayan tablo ya da sütun, kullanmaya çalıştığınızda başarısız olur.

Diğer kriterler

Şimdi gereksinimleri (veritabanı sunucuları arasında hareket anlamında) biri olarak taşınabilirlik söz etmedi. Burada JPA avantajına sahip olduğu kayda değer. Açıklamaları daha taşınabilir daha, diyelim ki, Hazırda XML (örneğin standart JPA ek açıklamaları yok karşılığı, Hazırda Beklet "yerli" ID yazın) ama ikisinde de daha taşınabilir daha ibatis / SQL.

Ayrıca JPA / Hazırda taşınabilir DDL ek olarak, JPA yapılandırma veritabanı şeması oluşturur, bu küçük bir Java programı çalıştırmak anlamı gördüm. İbatis ile desteklenen her veritabanı için bir komut dosyası gerekir.

Taşınabilirlik olumsuz JPA, bazı yönlerden, en düşük ortak payda, desteklenen davranışları büyük ölçüde veritabanı sunucuları geniş bir yelpazede genelinde yaygın desteklenen davranışları var demek ki. Eğer ibatis Oracle Analytics kullanmak istiyorsanız, sorun değil. İçinde JPA? Peki, bu bir sorun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012
  • warningthepeople

    warningthepe

    21 EYLÜL 2011