Java Hibernate ile piyasaya hızlı bir giriş yaptığı dönemlerde Windows'un NHibernate teknolojisi ile geride kaldığı adeta kabul edilen bir gerçekti. Her ne kadar bazıları veritabanına sorgu yazmanın daha alışılmış kolay ve performanslı bir işlem olduğunu düşünseler de Hibernate kendine önemli bir yer edindi.
Bu günlerde ise Microsoft'un .Net Framework 3.5 'i piyasaya sürmesiyle LINQ kavramı gündemimizde. Aslında Hibernate ile rekabet etmiyor LINQ. Zira sınıfları farklı. Yaratmış olduğunuz bir XML dosyasından, varolan bir dataset'ten, SQL den ve hatta csv dosyalarınızdan sorgu ile obje evet yanlış duymadık obje çekebilmemizi sağlayan altyapıdır LINQ. Performans olarak kıyaslandığında yaptığının bir for each döngüsünden çok daha performanslı olacağını düşünmek şimdilik zor gibi. Fakat hemen her alanda size sorgulama imkanı vermesi bana kalırsa en önemli yanı. Kullanıyor muyum diye soracak olanlar olursa: Evet kullanıyorum.
Öncelikle yazmış olduğumu kod sadeleşiyor. Tutup da bir for each yazarak tüm verilerimi bir datatable üzerinde gezmektense sadece bir sorgu yazıyorum. Verinin hafızada kalıp kalamayacağını seçebiliyorum. Bir sorgu üzerinden geri dönen şeyin obje olması ise bambaşka güzellik. Veriyi çektikten sonra istediğim özelliğini kullanabiliyor ve daha derleme zamanında hata ayıklama yapabiliyorum.
Ayrıca ilerleyen yıllarsa LINQ optimize olabilecek ve performansı artacaktır diye tahmin ediyorum. Bu durumda yazdığım kodu da tekrar geri dönerek değiştirmek gerekmeyecek.
Eksilerini ancak eskilerin artıları olarak sıralayabiliriz. bir sorgu sırasında değeri bulunca break komutu koymak pek de mümkün değil ve tüm koleksiyonu gezmeniz gerekiyor mecburen. Bu da performansa olumsuz yansıyor.
Kimbilir belki de düşüncelerim yeni olana yalakalıktan ibarettir. Bunu ancak zaman gösterir.
18 Mayıs 2008 Pazar
Kaydol:
Kayıtlar (Atom)