• temel olarak,sql kullanılarak bir dbserver üzerinden yapılan işlemlerin***** java fonksiyonları ve kendine özgü hql ile objeler üzerinden,dbserverdan bağımsız olarak yapılması mantığı ile ortaya çıkmıştır.
    veriler işlenirken,objeler üzerinde cursor,iterator ile teker teker işlem yapmak yerine hql ile sql de olduğu gibi veri kümeleri üzerinde işlem yapılabilir.
    veri tabanındaki tabloların bilgisi*** xml tabanlı hbm* dosyasında tutulur ve javada yaratılan tablonun eşleniği objeler getter,setter methodları ile dbserver'daki verilere bu dosyaları referans alarak ulaşır.bu işlemler sırasında third party c3po,proxol gibi connection pooling,ehcache,oscache gibi caching araçları/kütüphaneleri kullanabilir.
    geliştirme ekibinin büyük çoğunluğunun jboss bünyesine geçmesi ile muhtemelen jbossun ilerideki sürümlerinde bundled olarak gelecektir.
    http://hibernatesynch.sourceforge.net/ adresindeki şahane eclipse plug-ini ile var olan bir projeye entegre edilmesi yarım saat içinde gerçekleştirilebilmektedir.
  • sıfır sql yazarak bir java nesnesini veri tabanına yazmayi, oradan da okumayi mümkün kilan süper teknoloji.
    http://www.hibernate.org/
    (bkz: jdo)
  • eğer hibernate seçeneği denetim masası/güç seçenekleri bölümünde aktif ise, hard diskinizin ram kadar kısmı bekleme moduna ayrılmı$ durumdadır.

    örneğin 1 gb raminiz varsa c:\ dizininde 1 gb'lık hiberfil.sys adlı dosya, siz bekleme modunu aylarca kullanmasanız bile hazır ve nazır beklemektedir.*
  • windows işletim sisteminin, bilgisayarı kapatırken ram'deki bütün bilgiyi hdd'ye kopyalayarak bilgisayarın çok hızlı açılmasını sağlayan $ukela bir kapatma seçeneği. lakin her gülün bir dikeni olduğu gibi bu abimiz de özellikle dizüstü bilgisayarlar için tasarlandığından, masaüstü pc'lerde çok fazla sorun çıkarabilmektedir (bkz: fiziksel belleğin dökümüne başlanıyor). bu yüzden eğer sorunsuzsa eyvallah, yoksa masaüstü pc'lerde kullanılması pek tavsiye edilmez, deneyin görün.
  • pojoları veritabanına kaydetmeye yarar. jboss ejb3.0 implementasyonundaki entity beanlerin persistence altyapısıdır, normalde hsql'e kaydeder ama persistence.xml ya da başka bir yolla başka veritabanına yerleşebilir.

    jee 5 (ya da basitçe ejb 3) kullanıyorsanız annotationlarla nasıl "hibernate" edebileceğini söylersiniz. eğer ejb3ünüz yoksa j2ee ya da klasik java yazıyorsanız xdoclet kullanarak nasıl saklanacağını yazarsınız, xml ile uğraşmanıza gerek kalmaz.

    detaylı veriyapılarını saklarken biraz acı çekebilirsiniz. bu da deneyimle alakalı, 2. seferde çok rahat ediyorsunuz. ama yine de hibernate kullanmak yerine ejb3 ve container managed persistence kullanın. hiç kasmayın.

    eğer ki jee5 ya da j2ee yazılım geliştiriyorsanız ve kendinizi containerınızın xml dosyalarını, yazılımınız için düzenlerken bulursanız bilin ki birşeyleri yanlış yapıyorsunuz. düzgün hazırlanmış bir ear dosyası ile yapamayacağınız ayar yok (en azından jbossta)

    bu da 3 günün kuyruk acısı böyle bir anı.
  • yanlış ellerde çok büyük sorunlara neden olabilen muhteşem orm aracı. büyük güç büyük sorumluluk getirir.

    yaratılan bir objenin tablosunu, relation'larını, column'larını kısaca her şeyini kendisi yaratıp tek satır sql yazmadan yazılımcıya inanılmaz şeyler sunuyor. peki yazılımcı ne yapıyor? ilgili kodu push'layıp, sql script'ini yazmadan/test etmeden basıp geçiyor. sonuç "booom".

    özellikle büyük projelerde kullanırken yazılımcı için çok kolaylık sağlaması bir o kadar da dikkatli kullanılmasını gerektiriyor.

    edit: söylemeyi unutmuşum, çok seviyoruz kendisini.
  • çoğunlukla nasıl çalıştığını, nasıl işlediğini, arkada neler yapıp ettiğini, nasıl kullanılması gerektiğini bilmeyenlerin kullandığı orm aracı.

    doğru kullanıldığında veriyi alıp vermek için harcadığınız emeği azaltır;
    - hql sorgularınız konfigürasyon ile beraber kontrol edilir. hataları varsa çabuk ortaya çıkar. geliştirme ortamında ve canlı ortamda farklı veritabanları kullanabilirsiniz (son cümle biraz yalan biraz gerçek)
    - criteria api ile çalışma zamanında sorgu üretme daha hatasız ve güvenli olur.
    - kod tekrar kullanımı (hadi bilemediniz kopyala-yapıştır'ı) kolaydır.
    birçok durumda iş mantığını yazmak için daha fazla vakit ayırabilirsiniz.

    velhasıl kelam, bol reklamı yapılan -ama hibernate'in daha pek yeni olduğu(*)- big data ve tüm tutorial'ların örneklerin konusu small data arasına düşen bölgede dikkatli kullanınız. o örneklerde gördüğünüz şeylerin çoğu uğraşmanız gereken veri veya ilişki miktarı çok az büyüdüğünde bile size saç baş yolduracak. oturun başından sonuna o dokümanı okuyun. okuduğunuza değecek, dünya sizin için daha güzel bir yer olacak. diğer taraftan da jdbc nedir ona da bir bakın, jdbc ile istediğiniz işi yapmanın maliyetini ve performansını tahmin edebilir hale gelin.

    (*) nosql veritabanları için hibernate-ogm var ama kullanmadım, yorumu olan varsa yeşillendirsin.
  • youtube'da hibernate'i kapsamlı bir şekilde anlatan türkçe kaynak:

    hibernate dersleri
  • entity framework ten performansi daha iyi olabilir, test etmedim, netteki testlere de guvenmiyorum. ancak bir visual studio da 10 saniyede map ettigin ve aninda kullanabildigin orm objelerini bunda bildigin hazir beton varken harci kendin karistirmanla esit.

    su java dunyasi iyi hos da. guzel teknolojiler uretiyorlar kimse de cikip ne adam akilli ide yaziyor ne de yazdiklari frameworkleri developer friendly yapacak community yok. bazen orm dan vazgecip bildigin eski usul raw sql sorgularina gecesim geliyor. hayir zaten orm da da sql e yakin sorgu yaziyoruz, mappingler falanlar filanlarin derdi de apayri. db bagimsiz caliyormus. yaw brak.
  • kompleks queryleri yazılması gerektiğinde, doğrunda @namedquery içine yazdığınız query'e göre şamşırabilen orm aracı.
    mesala gelin size bir mysql'de çalışan örnek bir query yazalım.

    update person set name =
    case
    when name <> 'ali' then name else 'ali' end

    bunu hibernate'de yediremezsiniz exception fırlatır. bunun için cast yapmanız gerekir.

    update person set name =
    cast ( case
    when name <> :name then :name else name end as string)

    gördüğünüz gibi birebir aynı query'i elle yazsanız da yediremeyebilirsiniz. aman dikkat.
hesabın var mı? giriş yap