Kendi başıma biraz araştırma yaptım ve temel kavramı anladım. Ancak bazı görüşler ancak gerçek deneyimlerle elde edilebilir.
MyBatis'in yeni bir çerçeveyi öğrenmeye değecek avantajları nelerdir?
Hangi durumda kullanmaktan kaçının?
Kendi başıma biraz araştırma yaptım ve temel kavramı anladım. Ancak bazı görüşler ancak gerçek deneyimlerle elde edilebilir.
MyBatis'in yeni bir çerçeveyi öğrenmeye değecek avantajları nelerdir?
Hangi durumda kullanmaktan kaçının?
Yanıtlar:
Neyi başarmaya çalıştığınızı düşünün. Tipik olarak, Komut Sorgu Yanıtı Ayrıştırma modeli, karmaşık alanlar için iyi çalışır.
Bunun nedeni, tipik olarak iki şeyden birini yapmaya çalışmanızdır:
Hazırda Bekletme durumu yalnızca bir POJO yapmanıza ve devam ettirmenize / güncellemenize izin veren birinci vaka için iyi çalışır. Etki alanınız oldukça geniş değilse, bu işlemi hızlı bir şekilde yapar.
myBatis , sadece bir cevap almak istediğiniz sorguları (durum 2) getirmek için mükemmeldir. Hazırda Bekletme, nesne grafiğinin tamamını yüklemeyi dener ve geniş bir alanda çalışmaya devam etmesi için LazyLoading hileleriyle sorgu ayarlamaya başlamanız gerekir. Varlık nesnelerini bile döndürmeyen karmaşık analitik sorguları çalıştırırken bu önemlidir. Hibernate, SqlQuery ve bean Transformers'ı bu durumda BigDecimal gibi büyük varsayılan türlerde sunarken, myBatis basit bir POJO varlığına kolayca eşlenebilir.
Bu iki durum , etki alanı verilerini değiştirmek istediğiniz Komutlar ile yalnızca bazı verileri almak istediğiniz Yanıtlar arasındaki farktır .
Bu nedenle, bu iki durumu ve başvurunuzun ne yaptığını göz önünde bulundurun. Basit bir etki alanınız varsa ve yalnızca bilgi alırsanız, myBatis kullanın. Karmaşık bir etki alanınız ve kalıcı varlıklarınız varsa, Hazırda Beklet'i kullanın. İkisini birden yaparsanız karma bir yaklaşımı düşünün. Projede kontrol altında tutabilmek için binlerce varlığa sahip olan budur. ;)
MyBatis, SQL merkezlidir. SQL deyimlerini çağırmayı ve sonuçları (tabloları) nesne ağaçlarına eşlemenizi sağlar.
Asıl yararı bunun bir ORM olmamasıdır. Tabloları nesneye eşleştirmez, bu yüzden orm empedans uyumsuzluğuna maruz kalmaz. Karmaşık veya eski veritabanları için uygundur veya saklı yordamlar, görünümler vb. Gibi db özelliklerini kullanmak için uygundur.
Öğrenmesi oldukça basit ve kolaydır, bu yüzden düşük yetenekli takımlar için de çok uygundur, çünkü aralarında kış uykusunda bir guruya gerek yoktur.
Jpetstore 6'ya bir göz atın http://mybatis.org/spring/sample.html
Yana soru atıfta için benim yorumum , burada bunu yazarken aklında buydu.
Her şeyden önce, asıl sorunuzun bağlamından türetilmiştir. Diğer durumlarda farklı bir tavsiye verebilirim. Bana MyBatis'i önerttiği nokta şudur:
... bazı performans problemleriyle karşılaştık.
Veri tabanı performansı elde etmek için kış uykusunu basit Jdbc lehine bırakmaya karar verdik ...
Geçtiğimiz projelerden birinde, ekibimiz sizin açıkladığınız nedenlerden dolayı Hazırda Bekletme'den taşınmayı düşünüyor. Size benzer şekilde, JDBC'ye geçecektik, ancak başka bir projeden gelen meslektaşlar bize MyBatis'i tavsiye etti. Ekip denemeye karar verirken, JDBC'de işler ters giderse bir geri dönüş seçeneği olarak kalmaya devam etti.
O anda, MyBatis hakkında hiçbir şey bilmiyordum, ancak işi yapacağından emin olmak için JDBC'de yeterince tecrübem oldu. Buna rağmen, MyBatis'i deneme fikrimi güçlü bir şekilde destekliyordum. Bunun sebebi, geçmiş deneyimlerime göre, JDBC ile yazmak zorunda kalacağımız boyunduruk kodunun miktarının göz korkutucu olmasıydı.
Neyse, MyBatis'i denedik ve reklamı yapıldı. Bu yüzden sorduğun yorumu yazdım.
Teknolojiye ayrıntılı bir genel bakış sunmamı beklerseniz veya bir şekilde üstünlüğünü övmeyi beklerseniz - üzgünüm bunu yapamam. Yapabilseydim - Kısa yorum yapmak yerine bunu asıl sorunuza ayrı bir cevap olarak yazdım. O zamanlar MyBatiler hakkında hiçbir şey bilmediğimden bahsettim - peki hala üzgünüm hakkında çok az bilgim var. Hazırda Bekletme modundan geçiş, diğer ekip üyeleri tarafından yapıldı ve üzerinde çalıştığım kodu etkilemedi. Sadece anahtar teslim alımları hatırladım (yorumuma dayanarak), yani 1) MyBatis, Hazırda Bekletme ile ilgili sorunlarımızı çözdü, 2) kendi sorunlarını çıkarmadı ve 3) kazan kodunu yazmaktan kaçınmamıza izin verdi. JDBC'ye geçersek diye bekliyorduk. Bu kadar.
Hazırda Bekletme çok fazla büyü , beklenmedik davranış ve büyük öğrenme eğrisi için iyi biliyor . Dışarıda basitliğe daha fazla odaklanan ve kontrolün altında kalmanıza izin verecek başka çerçeveler var.
myBatiler onlardan biri, benim projem MentaBean başka biri. Bu konuda yardımcı olabilecek bir blog yazısı yazdım .
Hibernate'i 5 yıl önce Hibernate 3'ü kullanarak veri yükleme ve veri dönüştürme projesi için kullandım ve harika olduğunu düşündüm. Küçük bir e-ticaret uygulaması yapıyorum ve Hibernate 4'ü kullanmayı denedim ve son derece hayal kırıklığına uğradım. Aletleri çıkardılar ve IDE'ye sıkıca entegre ettiler. MyBatis'i denedim ve tek bir gecede çalışan her şeye gidiyorum ve bir uygulamaya entegre olmanın ne kadar kolay olduğunu çok mutluyum. Hazırda Bekletme'nin çok şişirilmiş olduğunu düşünüyorum ve bu noktada EJB 3'ü Hazırda Bekletme üzerinden kullanırdım.