Nhibernate nedir?

NHibernate kurumsal yazılım geliştirmede sıkça kullanılan açık kaynak kodlu bir Object-Relational Mapping (ORM) aracıdır. ORM, nesne odaklı (object oriented) dillerdeki nesnelerin, ilişkisel veritabanlarındaki (relational databases) kayıtlara nasıl karşılık geldiğini yürüten bir teknolojidir.

NHibernate adında .net çatısı için yeniden yazılmış bir türevi bulunur. Hibernate gibi ORM araçlarıyla, bir nesneyi veritabanına kaydetmek, yeni halini güncellemek ve sorgulama yapmak düz SQL bağlantılarına göre çok kolaydır.

Örneğin, JDBC ile veritabanına bir kayıt eklemek için şuna benzer bir kod yazılır;

stmt.executeUpdate( "INSERT INTO KAHVE(Name,Code,Price,Price2) VALUES ('Colombian', 101, 7.99, 0, 0)");

Burada, "KAHVE" tablosuna bir kayıt eklenmektedir. Böyle bir işlemi Nhibernate ile yapmak için ise;

KAHVE kahve=new KAHVE();
kahve.Name="Türk kahvesi";
session.saveOrUpdate(kahve);

şeklinde yazılır. Kahve, bildiğimiz düz bir java nesnesidir. Hibernate gibi ORM araçlarının en önemli faydası, kod yazımını kısaltmak veya kolaylaştırmaktan öte, yazılım bakımını kolaylaştırmasıdır. Veritabanı temelli uygulamalarda, kodun 1/3´ü veritabanı erişimine yöneliktir.

Veritabanındaki bir kolonunun tipinin değişmesi, yeni bir kolon eklenmesi gibi değişiklikler, bütün veri erişim kodunu tekrar gözden geçirmeyi gerektirir. Hibernate ile bu gözden geçirmeden çok yüksek oranda tasarruf edilir.

Hibernate kullanılan yazılımlarda, veritabanındaki değişikliklerde yapılması gereken sadece nesnelerle tabloların birbirine nasıl eşleştirildiğinin (mapping) gözden geçirilmesidir.

Nhibernate mimarisinin avantajları nelerdir?

Sadece tek satır kod ile sayfalama, sıralama, ekleme, silme, değiştirme işlemleri çok hızlı bir şekilde gerçekleştirilebildi. İsteğimize özel sorgular service sınıfının içine koyularak kolay bir katmanlama söz konusu olabilir.

Nhibernate mimarisinin dezavantjları nelerdir?

Object datasource nesne kullanımında nesneler arasındaki ilişkileri ifade etmede bazı sıkıntıları bulunuyor. Özellikle asp.net’in databinding yapısı eval komutu ile ilişkili nesneleri gösterebiliyorken bind yapısının kullanımına izin vermiyor.

Ancak bu problemler Nhibernate Data Source adlı open source projede ortadan kaldırılmış. Belirtilen alanları sanki tek nesneymiş gibi göstererek problemi çözüme kavuşturuyor. Filtreleme, arama gibi ekranlar için neredeyse hiç enerji harcamak zorunda kalınmıyor.

Yorumlar

Bu sayfa ait yorum bulunamadı. İlk yorum yapan siz olun.

Yorum ekle

Vazgeç