Tags: | Categories: asp.net, c# Posted by Admin on 3/5/2011 9:57 PM | Comments (0)

Merhabalar, kısa bir aradan sonra tekrar yazmaya başlıyorum nihayet. Genel itibari ile bu konuda pek yazılı materyal bulunmamasının da yazmaya karar vermem de etkili olduğunu belirtmek istiyorum. Database erişimi konusunda uzun zamandır çalıştığımı yakın arkadaşlarım bilirler. Araştırmalarım boyunca NHibernate den uzak durmaya çalıştım. Adı biraz ürkütücüydü ve çok büyük projelerde kullanıldığından felan bahsedildiği olmuştu. Sanırım benim gibi düşündüğünden dolayı uzak duran onlarca kişi var :) Konu üzerinde araştırdıkca aslında o kadar da korkulacak bir şey olmadığını farkettim. Bu bağlamda edindiğim bazı bilgileri de paylaşmakta fayda olduğunu düşünüyorum.

NHibernate kütüphanesi özetle database ile ilgili kodlama yükünün büyük bir kısımını üstlenir ve tek işi de database'den aldığı data ile ilgili olduğundan bu konuda uzmanlaşmıştır. Veritabanı ile uygulama arasındaki iletişimi sağlamak oldukca basitdir ancak bazı özel durumlar için kodlamada değişiklikler gerekebiliyor. Tüm kodlamanız yalnızca mssql destekliyor olmasına karşın bir gün patronunuz size bunun mysql sürümünüde yapmanızı isterse ne yapacaksınız? Kodlamanız farklı database'ler ile çalışabilir durumda olabilir ancak database dönüştürülebilir şekilde tasarlanmamışsa ne olacak? Çok özel bir örnek olmuş olabilir, kabul ediyorum ancak bu tür durumlarda ortaya çıkabiliyor. Maliyetler ve müşteri talepleri doğrultusunda işinizi bitirmeniz gerekiyor. Diğer taraftan veritabanı iletişim dili veritabanlarına göre değişiklik gösterebiliyor. Özetle veri tabanı erişim işini bu konuda uzman bir kütüphaneye bırakmakta fayda görüyorum, tabiki bu kararı verirkende işi kime emanet ettiğinize de iyi karar vermeniz icap eder.

Bu yazıda herhangi bir kod bloğu görmemiş ve görmeyecek olmanızın asıl sebebi nhibernate ile ilgili yazılarda xml veya class larla örnekler verilerek bir çok makalenin yakın zamana kadar beni ürkütmesinden dolayıdır. Temel olarak nhibernate sizin için veritabanı işlerini organize ediyorsa bir şekilde veri yapılarını bildirmeniz gerekiyor. Bir öğrenci takip sistemi düşünelim, öğrenci, öğretmen, sınıf vs. tablolarını veritabanında oluşturup yola koyuluyoruz(malesef) oysa önce nesnesel tasarımın yapılması çok daha uygundur. Bu bağlamda nhibernate'de veritabanı bağımsız(mssql, mysql, oracle gibi herhangi bir veritabanı ile) çalışabildiği için veri tabanı üzerinden tablo açarak başlamak çok anlamsız oluyor. Yapılması gereken ve genel olarak kullanılan iki yöntem var. Birincisi xml kodları ile veri yapınızı bildirmek ki tercih etmiyorum ikincisi de ilgili sınıfları yazıp(öğrenci, öğretmen vb. sınıfları) nhibernate'e sınıfa göre tabloları vb. oluşturmasını istediğinizi bildirmek ki bunu da çok seviyorum.

Özetlersek, nhibernate güçlü bir veri tabanı erişim ve etkileşim aracıdır ve bir şekilde veri yapılarını bildirdiğimiz taktirde veri getir götür işlerini üstleniyor.

Bu yazıyla nhibernate'in güzel yönlerinden kısaca bahsetmiş oldum. İlerleyen yazılarda teknik meselelere iniyor olacağız. Entitiy Framwork Code First  ve SubSonic projelerine de arasıra gidip gelebiliriz diye umuyorum. Görüşmek üzere.

Kahve ısmarlayın

Aşağıdaki kahve simgesine tıklayarak bana paypal üzerinden kahve ısmarlayabilirsiniz. Kahveye olan düşkünlüğü ile bilinen birisi olarak büyük bir zevkle içeceğimden emin olabilirsiniz.


Add comment




biuquote
Loading