Merhaba, bir iki kurumsal firmada ORM olarak mybatis (ya da daha eski sürümü iBatis) kullanıldığını biliyorum. İnternette göz attığımda insanlar hibernate'e yönelmek gerektiği konusunda daha fazla yazmışlar. Mybatis ya da iBatis hakkında yazılanlar hibernate'e göre daha az. Anladığım kadarıyla hibernate daha özelleştirilmiş bir ORM. Bunların arasında tercih etme durumunda kalsak hangi kriterleri göz önünde bulundurmalıyız?

soruldu: 25 Şub, 10:14

emresevinc's gravatar image

emresevinc
0135
cevap kabul oranı: 100%


MyBatis sql veya stored procedure ile java objelerini esleyen(mapper) bir Java Persistence framework'u. Bu eslestirmeleri Xml veya Java Annotation'lari ile yapar.

JPA/Hibernate ise bir Object-Relational Mapping - ORM'dir. Hibernate java classlarini veritabani tablolarina eslestirir, Hibernate ile tanimlanmis her class(entity)'nin veritabaninda bir tablo karsiligi olmalidir. Aralarindaki en buyuk fark bu.

MyBatis duz Sql kullanirken, JPA/Hibernate JPQL (Obje sorgulama dili) kullanir. JPA standart ve JDK icinde yer alir, MyBatis bir Apache projesidir.

Performans ve karmasik sql kullanimi icin MyBatis, standart olmasi ve enterprise projelerde olgunlugunu ispatlamis, genis kullanici ve dokuman destegine sahip olmasi gibi sebeplerden dolayi da JPA/Hibernate kullanimi tavsiye edilir.

Benzer object mapper mantiklarini kendiniz de Dozer gibi libs lerle kodlayabilirsiniz. JOOQ frameworku de sql odakli java veritabani yapan son zamanlarda popüler araclardan biri.

permanent link

cevaplandı: 05 Mar, 03:42

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Öncelikle cavabınız için teşekkür ederim. Mybatis'te de veri tabanı tablolarını class'lar ile objeleştiriyor. Tam olarak farkını anlayamadım. Mybatis'te ayrıca kriter(Criteria) nesneleri kullanılarak veriler üzerinde sorgulama işlemlerini yapabiliyoruz. Yetmediği durumlarda custom querylere yönelmek zorunda kalıyoruz. Henüz hibernate'i kullanmadığım için net olarak farklarını anlayamadım.

(07 Mar, 06:20) emresevinc emresevinc's gravatar image

MyBatis direk veritabani tablosunu esletirmek yerine mapper olarak kullaniliyor. Ornegin MyBatis'da bir select sorgusu yazip sectiginiz tablo kolonlarini mapping yapabilirsiniz, JPA'daki mantik sql sorgularini mapping yapmak yerine direk veritabani tablolarini mapping yapmak olarak dusunulebilir. JPA birebir veritabani tablosu => Entity eslestirme yapmakla birlikte diger Java EE modulleriyle uyumlu calisir, JTA, EJB, CDI vs. gibi. Bu tür öenterprise özellikler MyBatis'da bildigim kadariyla yok! MyBatis standalone persistence framework olarak da gorulebilir.

(28 Mar, 04:13) CemIkta ♦ CemIkta's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×109
×19
×2

Soruldu: 25 Şub, 10:14

Görüntüleme: 348 kez

Son güncelleme: 28 Mar, 04:13

powered by BitNami OSQA