Home Contact RSS

Büyük kolaylık: NHibernate

Üzerinde çalıştığım bir proje gereÄŸi NHibernate ile tanıştım. Åžimdiye kadar abstraction, data, facade, entities gibi layer’ların içinde kaybolmaya hiç de gerek yokmuÅŸ. NHibernate veritabanı objelerinin kalıtımını ve object oriented olarak kullanımını; entity’lerin otomatik olarak oluÅŸturulmasını ve uygulamanın tamamiyle veritabanı bağımsız olması seçeneklerini kolayca sunuyormuÅŸ.

Her yiğidin bir yoğurt yeyişi vardır diyeceksiniz fakat bazen hazır yoğurt yemek insana oldukça sürat kazandırabiliyor. Özellikle de vaktiniz kısıtlıysa.

Dip not: Java’nın Hibernate’inin, .NET’e port edilmiÅŸ olanıdır.

http://www.nhibernate.org

Tuna Toksöz said,

January 15, 2007 @ 18:34

NHibernate’e linq syntaxı gelince her ÅŸey daha güzel olacak.
ORM tool denilebilecek ADO.net Entity Framework var, DLinq üstüne kurulu ama şu an CTP ve yeni ctpler orcas yanında veriliyor sanırım.
DLinq ile idare etmek durumundayız şu halde :)
Deneyin derim, NHibernate mutlaka iyidir fakat DLinq daha kolay, özellikle projection ve query yaparken. Onun dışında Database taraflı bir sayfalama yeteneğini de es geçmemek lazım.
Caching için getirdiÄŸi pek bir ÅŸey yok dlnq’nun (yanlış biliyor olabilirim).
Bakın derim.

Coskun SUNALI said,

January 18, 2007 @ 05:37

Tuna Bey,

Aslına bakarsanız NHibernate ile uzun süreli bir geçmiÅŸim yok. Ancak son bir haftadır ayrıntılı inceleme ÅŸansım oldu. Entity’ler üzerinde veritabanına map edilmemiÅŸ property’ler ile çalışmak, Map edilmemiÅŸ sorgular oluÅŸturmak gibi basit iÅŸlemler NHibernate üzerinde kesinlikle ölüm demek.

Açıkçası DLinq’i çok fazla inceleme ÅŸansım olmadı, o yüzden üzerinde yorum yapmak istemiyorum. Fakat inceleme fırsatı bulduÄŸum anda, fikirlerimi sizinle paylaÅŸacağım.

İlgi ve alakanız için teşekkürler.

Eyüp said,

February 3, 2007 @ 22:53

Nhibernate cidden kod yazımını dehÅŸet derecede basitleÅŸtimiÅŸ. 2 satırla ekle sil güncelle. Tabi ilk adımda kullanılacak olan databasedeki tabloları ve fieldların XML ve classlarını hazırlamak. Bu uzun, sıkıcı ve dikkatli olunacak olan süreci daha da kısa sürede yapabilmek için otomatik genarade eden bi iki free tools kullandım. Hatta iÅŸi biraz daha derinleÅŸtirip Nhibernate ile oluÅŸturulan bu layer ile database ile kod layerlarını birbirinden ayırdıktan sonra. Kodlar ile Nhibernate layerı arasına bir layer daha yerleÅŸtirerek Nhibernate den de bagımsızlaÅŸtım. Proje bittiÄŸinde sistemin ORACLE, SQL SERVER yada baÅŸka bir database’e baÄŸlı kalmadığı gibi Nhibernate toolu yerine benzer bir toolda kullansam kodların deÄŸiÅŸmesine hiç gerek kalmadı. Bu ikincisi müşteri tarafından çok önemli olmasada Database olan bağımlılığın kalkması müşteri için çok önemli bir husus. Nhibernate’ de save , update, delete iÅŸlemleri çok basit gibi görünsede karışık raporlamalarda bazen çıkış olmuyo. Çıkışın olmadığı yerlerde ise hibernate’e özel olan ve sqle azda olsa benzeyen HQL yazarak çıkış bulmaya çalışıyorum. Ama bazen bu bile yetersiz kalabiliyor. Yardımım dokunursa bu konuda elimden geleni yaparım. Saygılar

Ümit Gündüz said,

February 19, 2007 @ 18:01

NHibernate gerçekten güzel DAL ile uraşmıyorsunuz direk BO ile başlıyorsunuz fakat bizim en çok sıkıntı çektiğimiz noktalar Group By ve master child objeler de oldu. Group By özelliği NHibernate te var zaten HQL ile yapıyorsunuz ancak gelen datayı object collection a parse edemiyorsunuz yada biz başaramadık.
Bunun dışında master child kayıtlarda kurulan relation da veri güzel bir şekilde geliyor ancak yeni kayıt ve update işleminde ne master ı ne detail i kaydediyor. Collection lar içinde foreach ile dönüp kaydetmek zorunda kaldık. Tabi ki oturup çok fazla uğraşmadık belki bunların çözümleri vardır. Biz projemizde NHibernate 1.1.4322 kullanmıştık sonraki versiyonlarda belki çözülmüştür.
Linq yu deneme fırsatım olmadı ama aldığım duyumlarda herkes muhteşem diyor bu konuya da ağırlık verirseniz sevinirim. NHibernate, Hibernate in 3.0 versiyonuna yetişene kadar Linq u onu siler diye düşünüyorum ancak önce Linq u yu görmek bir projede kullanmak lazım yoksa NHibernate çok güzel ve yararlı oldu. Teşekkür ediyorum saygılarımla

Hasan said,

February 20, 2007 @ 12:19

Dikkatimi çeken birÅŸeyi sizlerlerle paylaÅŸmak istedim. NHibernate ile tanışmam yaklaşık 10 ay önce oldu. Kendi kendime .net ortamında neler yapabiliriz diye sorupta araÅŸtırma yaparken NHibarnate ile tanıştım. O sıralar türkçe yazılan çok yazı yoktu, yazılanlarda genelde ingilizce yazılmış yazıların direkt olarak türkçeye çevrilmiÅŸ halleri idi. Åžimdi yazılanları okuyorum ve hep eleÅŸtiri hep eleÅŸtiri, o kadar komik yorumlar varki anlatamam. NHibernate’in tanımını bile yaparken yazılan yanlışlar beni güldürüyor. Kimse bu uygulamanın tam olarak neler yapabileceÄŸi konusunda(saçma sapan eleÅŸtiri yapanlar için söylüyorum) bir proje geliÅŸtirip, çektiÄŸi skıntıları ve bu sıkıntıları nasıl aÅŸtığı, aÅŸamadığı sıkıntıların baÅŸka çözümü var mı ? gibi tamamen bilgi paylaşımı yapmıyor. 2 tane table alıp bunlara xml hazırlayıp , class ları uygulamaya gömüp, kaydet dedim kaydetti, sil dedim sildi ama iÅŸte şöyle zor şöyle karışık gibi paylaşımlarım da bize hiç bir faydası yok. Mesela NHibernate destekli Object grid var mı?(hani ÅŸu her iÅŸi yapan gridlerden), ya da proje bitmeye yakın artık ÅŸu raporları tasarlayalım ama proje baÅŸtan sona ORM rapor için direkt database e baÄŸlanıp yapıyı bozacakmıyız yoksa bunun için geliÅŸtirilmiÅŸ raporlama toolları varmı. Objelere baÄŸlanıp çıktı alacak. Ya da Eyüp bey’in bahsettiÄŸi HQL ile neler yapılabilir. Ben ÅŸunu çok iyi biliyorum ki JAVA dünyasında insanlar Hibernate kullanıyorlar ve herkes halinden çok memnun. O kadar çok tool var ki ve bu insanlar o kadar ağır projeler oluÅŸturuyorlar ama tamamen O2RM ve kullandıkları temel Hibernate. Unutmayalım ki yazılım iÅŸi hiçbir zaman herkesin çok yapabileceÄŸi bir iÅŸ olmayacaktır, tabiki zor olacak ve tabiki düzen ve disiplin gerektirecektir. Zor ve karışıklık bizim bilgimize göre deÄŸiÅŸebilir. Saygılarımla.

Coskun SUNALI said,

February 21, 2007 @ 12:56

Eyüp Bey, Ümit Bey, Hasan Bey,

Değerli katılımlarınız ve fikirleriniz için teşekkür ederim.

Erol Bey said,

February 23, 2007 @ 12:48

Sadece Hasan Arkadaşımıza Katıldığımı belirtmek için yazıyorum.. gözlemleri çok doğru. teşekkürler.

MuratHAKSAL said,

March 18, 2007 @ 16:35

Nhibernate 2 kurumsal proje geliştirdim, group by, filter, expression gibi konularda 3. party tool kullandım.(Infragistics) Bu hiç sorun olmadı, Entity katmanında her nesnenin instance dönen bir valueField ve facade katmanında join için tüm nesnelerin assembly bilgilerinden çok rahatlıkla dönebilrsiniz.
Yardımcı olması acısından yazdım Kolay Gelsin….
Teşekkürler
MH

Eyüp said,

April 9, 2007 @ 15:36

@Ümit Gündüz SELAMlar Ümit bey;

O bahsettiğiniz işlemi bende projemde çok denememe rağmen başaramadım bir türlü gelen veri Object Collectiona parse edilemiyo. Sanıyorum ki bunun sebebi de şu. HQL ile yazılan querylerin sonucunda dönen listenin herhangi bir type ı yok. O yüzden foreach ile tek tek yapmamız gerekiyo. Hoş gerçi type lı olsada nasıl bir method kullanılacak bilmiyorum henüz veriyi typelı alamadığım için o aşamaya geçemedim. Umarım üst versiyonlar da vardır . yada yapılmış bir örnek denk gelir.iyi çalışmalar

M. Tahir Çakmak said,

April 5, 2008 @ 12:45

Selamlar;
Hasan Bey demiÅŸ ki:
“Unutmayalım ki yazılım iÅŸi hiçbir zaman herkesin çok yapabileceÄŸi bir iÅŸ olmayacaktır, tabiki zor olacak ve tabiki düzen ve disiplin gerektirecektir.”

Ben bu cümleye o kadar katılmıyorum. Önemli olan biz yazılım uzmanlarının ya da yazılım mimarlarının: projeyi neredeyse Jr. Programcıların dahi kodlyabileceği hale getirmek olmalı. Çeşitli frameworkler, satın alınan development ürünleri; ne kullanacaksak kullanalım hedef bu olmalı.

DiÄŸer taraftan Nhibernate’e gelince küçük bir çalışma ile .Net’in ObjectDatasource ve DataBinding yapıları ile beraber çalışabilir hale gelebiliyor. Bu açıdan oldukça hızlı ve kolay kullanılabilir.

Kısacası her proje ekibinin bir yazılım mimarı vardır(ya da olmalıdır), çünkü hedef kolay kodlamayı kolaylaştıran fikirler bulmaktır..

İyi çalışmalar…

ihsan said,

January 9, 2009 @ 10:31

Sizler hiç EnterpriseLibrary kullandınız mı? Nettires Template’i ile birlikte ?

Hasan said,

August 15, 2009 @ 08:40

Neredeyse 2 yıl önce yukarıdaki yazımı okudumda, zaman ne kadar da cabuk geciyor. Yazılım Teknolojileri müthiÅŸ bir hızla ilerliyor ama bu ilerleyiÅŸ öyle çokta jr. programcılar tarafından yapılmıyor yukarıda Tahir Bey’in dediÄŸi gibi olmuyor yani. Hele ki ÅŸu devirde yanlış yazılım üzerine inÅŸa edilmiÅŸ sistemlerin sıkıntılarını ben ÅŸahsen fazlasıyla çekiyorum. Tekrar ediyorum, öyle her önüne gelen yazılım iÅŸi ile uÄŸraÅŸmamalı. Çünkü o programı kullanan insanların nasıl kıvrandığını ben çok iyi biliyorum. Åžimdi siz tutupta her önüne gelene inÅŸaat yaptırırmısınız. Teknolojisi ne olursa olsun herkes çok kolay bina dikebilir mi ? Ya da yazılım iÅŸinin inÅŸaat iÅŸinden ne farkı var söylermisiniz. Neyse o konuyu kapatıp asıl konumuza dönecek olursak. LINQ diyorum ve saygı duyuyorum. Microsoft LINQ iÅŸini çok iyi becerdi. ADO.NET Entity Framework var ki bence araÅŸtırılmalıdır.

RSS feed for comments on this post · TrackBack URI

Leave a Comment