NHibernate Kullanımı Nasıl Olmalı

200 views
Skip to first unread message

Selcuk OZDOGAN

unread,
Sep 30, 2009, 3:25:11 AM9/30/09
to altdotnetturkiye
Merhaba arkadaşlar,

Nhibernate i kurumsal uygulamalarda kullanan arkadaşlara bir kaç sorum
olacak.
Biz de kendi geliştirme ekibimizde nhibernate e geçiş yapmayı
planlıyoruz. Bunun ön araştırmasını
ve karar verilirse geçişini ben yapacağım.Geliştirme ortamımız Visual
Studio 2008 (C#, ASP.NET),
veritabanımız Oracle 10g.

Benim sizlerden fikir almak istediğim konular şunlar;

* ASP.NET uygulamalarinda nhibernate kullanım mimarisi nasıl olmalı ?

Bundan kastım şudur, nhibernate session nerde açilip nerde kapanmalı,
nerde save edilmeli vs.
Açikçasi bu işi developerin her veritabanı işlemi yaptığında
kendisinin yapmasını değilde,
bir üst seviyede yapmak mümkünmü. (BeginRequest, EndRequest vb)

Configuration nerde set edilmeli. (Bildiğim kadarıyla bu uygulama
domaini içerisinde bir kere set ediliyor?)
Dolayısıyla ApplicationStart, SessionStart vb yerlerde set etmek
mantıklı mı?

Ya da (ki bu en kötü çözüm sanırım) session instance i bi yerde
saklanıp, burdan alıp mı kullanmalı?

Bu konularda sizin izlediğiniz yöntem nedir,
bir entity i db ye kaydeden örnek basit bir kodunuzu ya da yapınızı
paylaşabilirmisiniz.

* Nhibernate kullanmak üzere gerekli olan tablolardan xml dosyalarını
ve entity sınıflarını otomatik
oluşturan bir tool var mıdır?

* Ben aslında nhibernate i direk alıp kullanmak değil de bir ara
katman koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate
baya kapsamlı bi altyapı, böyle bir ara katman kullanabilmem için,
gidip tüm siniflari bazi base lerden türetmem gerekiyor ki, inanilmaz
iş yükü. Gerek de var mı bilmiyorum. Ancak ilerde nhibernate benzeri
başka bir yapıya geçersek işimize yarar !?

* Tam olarak bir ara katman olmasa da, kurumsal uygulamalarda izlenen
belli bir pattern var mıdır nhibernate kullanmak için. Yoksa standart,
db işi yapılacağı zaman, entity ni oluştur, nhibernate sessionına
kaydet ve kapat şeklinde midir?

* Son olarak da, nhibernate i WCF üzerinden bir servis olarak sunma
işini yapan gören duyan var mıdır acaba?
(net.tcp)

Aslında daha başka sorularım da olabilir, ancak onları da bilgili
arkadaşların cevapları doğrultusunda yönlendirebilirim. Şimdiden çok
teşekkürler.

İyi çalışmalar.

Berke Sokhan

unread,
Sep 30, 2009, 4:37:52 AM9/30/09
to altdotne...@googlegroups.com
Selamlar,

Oracle için NHibernate kullanacaklara genel bir not düşmek istedim.

NHibernate ORacle için MS'in sürücü kütüphanesini kullanıyor (System.Data.OracleClient). Ancak bilindiği gibi MS geçtiğimiz aylarda bu driverları artık desteklemeyeceğini ve deprecate edeceğini açıkladı (http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx , http://www.oracle.com/technology/tech/dotnet/msoc/index.html , http://cshay.blogspot.com/2009/07/microsoft-deprecates-oracleclient-time.html).

Dolayısıyla uzun süre kullanılacak bir sistem geliştirmek için şu sıralar genelde kullanılan Microsoft OracleClient sürücüleriyle NHibernate üzerinde geliştirme yapmaya başlamak riskli olabilir.

Sırf bu yüzden NHibernate kullanmamanızı tavsiye etmem. Yeni bir provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile geliştirilecektir.

Ancak bu noktayı dikkate almanızda fayda var.

İyi Çalışmalar,
Berke Sökhan.


2009/9/30 Selcuk OZDOGAN <selcuk....@gmail.com>



--
Berke SOKHAN

Berke Sokhan

unread,
Sep 30, 2009, 5:07:59 AM9/30/09
to altdotne...@googlegroups.com
Sorularına gelirsek;

Profesyonel bir projede NH. kullanmadığımı, ancak yine de NH ile ilgilenmiş biri olarak cevap vermeye çalışayım, (bu sorularına Tuna daha iyi cevap verebilir zannımca):


* ASP.NET uygulamalarinda nhibernate kullanım mimarisi nasıl olmalı ?

Senin de belirttiğin gibi bu işlerin Application eventlerinde yapıldığını görüyorum, dolayısıyla varsayımın mantıklı. Her bir Request bir UnitOfWork şeklinde tasarlanan projeler mevcut.


* Nhibernate kullanmak üzere gerekli olan tablolardan xml dosyalarını ve entity sınıflarını otomatik oluşturan bir tool var mıdır?
ActiveWriter by Gökhan Altınören :) http://altinoren.com/activewriter/


* Ben aslında nhibernate i direk alıp kullanmak değil de bir ara katman koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate baya kapsamlı bi altyapı, böyle bir ara katman kullanabilmem için, gidip tüm siniflari bazi base lerden türetmem gerekiyor ki, inanilmaz iş yükü. Gerek de var mı bilmiyorum. Ancak ilerde nhibernate benzeri başka bir yapıya geçersek işimize yarar !?
DDD patternlerini uygulamaya çalışacaksan, zaten Repository'den haberin vardır. Bu tür bi wrapleme ile DB altyapını domain'innde izole etmiş olursun. Kısacası Repository ve ya generic Repository gibi yapılarla NH i wraplersen NH ile ilgili kodu business ına sızdırmamış olacaksın zaten.


* Tam olarak bir ara katman olmasa da, kurumsal uygulamalarda izlenen belli bir pattern var mıdır nhibernate kullanmak için. Yoksa standart, db işi yapılacağı zaman, entity ni oluştur, nhibernate sessionına kaydet ve kapat şeklinde midir?
Yukarıda kısmen cevapladığımı düşünüyorum, ama NH practician lar başka patternler de kullanıyor olabilir...

Son sorun hakkında bilgim yok maalesef :)

Berke Sökhan,
İyi Çalışmalar.

2009/9/30 Berke Sokhan <berke...@gmail.com>



--
Berke SOKHAN

Tolga Yıkılmaz

unread,
Sep 30, 2009, 6:20:21 AM9/30/09
to altdotne...@googlegroups.com
Xml map yerine fluent daha zevkli olabilir

30 Eylül 2009 12:07 tarihinde Berke Sokhan <berke...@gmail.com> yazdı:

Selcuk OZDOGAN

unread,
Sep 30, 2009, 8:17:19 AM9/30/09
to altdotnetturkiye
Buradan gelecek yorumlarla nasıl bir yapı kuracağımı şekillendirmek
durumundayım,
dolayısıyla yönlendirme için çok teşekkürler, diğer arkadaşların da
varsa fikirleri paylaşırlarsa sevinirim.

On Sep 30, 12:07 pm, Berke Sokhan <berkesok...@gmail.com> wrote:
> Sorularına gelirsek;
>
> Profesyonel bir projede NH. kullanmadığımı, ancak yine de NH ile ilgilenmiş
> biri olarak cevap vermeye çalışayım, (bu sorularına Tuna daha iyi cevap
> verebilir zannımca):
>
> * ASP.NET <http://asp.net/> uygulamalarinda nhibernate kullanım mimarisi> nasıl olmalı ?
>
> > Senin de belirttiğin gibi bu işlerin Application eventlerinde yapıldığını
>
> görüyorum, dolayısıyla varsayımın mantıklı. Her bir Request bir UnitOfWork
> şeklinde tasarlanan projeler mevcut.
>
> * Nhibernate kullanmak üzere gerekli olan tablolardan xml dosyalarını ve> entity sınıflarını otomatik oluşturan bir tool var mıdır?
>
> ActiveWriter by Gökhan Altınören :)http://altinoren.com/activewriter/
>
> * Ben aslında nhibernate i direk alıp kullanmak değil de bir ara katman> koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate baya kapsamlı
> > bi altyapı, böyle bir ara katman kullanabilmem için, gidip tüm siniflari
> > bazi base lerden türetmem gerekiyor ki, inanilmaz iş yükü. Gerek de var mı
> > bilmiyorum. Ancak ilerde nhibernate benzeri başka bir yapıya geçersek
> > işimize yarar !?
>
> DDD patternlerini uygulamaya çalışacaksan, zaten Repository'den haberin
> vardır. Bu tür bi wrapleme ile DB altyapını domain'innde izole etmiş
> olursun. Kısacası Repository ve ya generic Repository gibi yapılarla NH i
> wraplersen NH ile ilgili kodu business ına sızdırmamış olacaksın zaten.
>
> * Tam olarak bir ara katman olmasa da, kurumsal uygulamalarda izlenen belli> bir pattern var mıdır nhibernate kullanmak için. Yoksa standart, db işi
> > yapılacağı zaman, entity ni oluştur, nhibernate sessionına kaydet ve kapat
> > şeklinde midir?
>
> Yukarıda kısmen cevapladığımı düşünüyorum, ama NH practician lar başka
> patternler de kullanıyor olabilir...
>
> Son sorun hakkında bilgim yok maalesef :)
>
> Berke Sökhan,
> İyi Çalışmalar.
>
> 2009/9/30 Berke Sokhan <berkesok...@gmail.com>
>
>
>
> > Selamlar,
>
> > Oracle için NHibernate kullanacaklara genel bir not düşmek istedim.
>
> > NHibernate ORacle için MS'in sürücü kütüphanesini kullanıyor
> > (System.Data.OracleClient). Ancak bilindiği gibi MS geçtiğimiz aylarda bu
> > driverları artık desteklemeyeceğini ve deprecate edeceğini açıkladı (
> >http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oraclecli...,
> >http://www.oracle.com/technology/tech/dotnet/msoc/index.html,
> >http://cshay.blogspot.com/2009/07/microsoft-deprecates-oracleclient-t...
> > ).
>
> > Dolayısıyla uzun süre kullanılacak bir sistem geliştirmek için şu sıralar
> > genelde kullanılan Microsoft OracleClient sürücüleriyle NHibernate üzerinde
> > geliştirme yapmaya başlamak riskli olabilir.
>
> > Sırf bu yüzden NHibernate *kullanmamanızı tavsiye etmem*. Yeni bir
> > provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve
> > belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için
> > NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile
> > geliştirilecektir.
>
> > Ancak bu noktayı dikkate almanızda fayda var.
>
> > İyi Çalışmalar,
> > Berke Sökhan.
>
> > 2009/9/30 Selcuk OZDOGAN <selcuk.ozdo...@gmail.com>

Selcuk OZDOGAN

unread,
Sep 30, 2009, 8:18:06 AM9/30/09
to altdotnetturkiye
Fluent? Malesef bilgim yok, hemen bir google amcaya soracağım,
yine de özet bilgi verebilirseniz sevinirim.

On Sep 30, 1:20 pm, Tolga Yıkılmaz <tolga.yikil...@gmail.com> wrote:
> Xml map yerine fluent daha zevkli olabilir
>
> 30 Eylül 2009 12:07 tarihinde Berke Sokhan <berkesok...@gmail.com> yazdı:
>
> > Sorularına gelirsek;
>
> > Profesyonel bir projede NH. kullanmadığımı, ancak yine de NH ile ilgilenmiş
> > biri olarak cevap vermeye çalışayım, (bu sorularına Tuna daha iyi cevap
> > verebilir zannımca):
>
> > * ASP.NET <http://asp.net/> uygulamalarinda nhibernate kullanım mimarisi
> >> nasıl olmalı ?
>
> >> Senin de belirttiğin gibi bu işlerin Application eventlerinde yapıldığını
> > görüyorum, dolayısıyla varsayımın mantıklı. Her bir Request bir UnitOfWork
> > şeklinde tasarlanan projeler mevcut.
>
> > * Nhibernate kullanmak üzere gerekli olan tablolardan xml dosyalarını ve
> >> entity sınıflarını otomatik oluşturan bir tool var mıdır?
>
> > ActiveWriter by Gökhan Altınören :)http://altinoren.com/activewriter/
>
> > * Ben aslında nhibernate i direk alıp kullanmak değil de bir ara katman
> >> koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate baya kapsamlı
> >> bi altyapı, böyle bir ara katman kullanabilmem için, gidip tüm siniflari
> >> bazi base lerden türetmem gerekiyor ki, inanilmaz iş yükü. Gerek de var mı
> >> bilmiyorum. Ancak ilerde nhibernate benzeri başka bir yapıya geçersek
> >> işimize yarar !?
>
> > DDD patternlerini uygulamaya çalışacaksan, zaten Repository'den haberin
> > vardır. Bu tür bi wrapleme ile DB altyapını domain'innde izole etmiş
> > olursun. Kısacası Repository ve ya generic Repository gibi yapılarla NH i
> > wraplersen NH ile ilgili kodu business ına sızdırmamış olacaksın zaten.
>
> > * Tam olarak bir ara katman olmasa da, kurumsal uygulamalarda izlenen belli
> >> bir pattern var mıdır nhibernate kullanmak için. Yoksa standart, db işi
> >> yapılacağı zaman, entity ni oluştur, nhibernate sessionına kaydet ve kapat
> >> şeklinde midir?
>
> > Yukarıda kısmen cevapladığımı düşünüyorum, ama NH practician lar başka
> > patternler de kullanıyor olabilir...
>
> > Son sorun hakkında bilgim yok maalesef :)
>
> > Berke Sökhan,
> > İyi Çalışmalar.
>
> > 2009/9/30 Berke Sokhan <berkesok...@gmail.com>
>
> > Selamlar,
>
> >> Oracle için NHibernate kullanacaklara genel bir not düşmek istedim.
>
> >> NHibernate ORacle için MS'in sürücü kütüphanesini kullanıyor
> >> (System.Data.OracleClient). Ancak bilindiği gibi MS geçtiğimiz aylarda bu
> >> Dolayısıyla uzun süre kullanılacak bir sistem geliştirmek için şu sıralar
> >> genelde kullanılan Microsoft OracleClient sürücüleriyle NHibernate üzerinde
> >> geliştirme yapmaya başlamak riskli olabilir.
>
> >> Sırf bu yüzden NHibernate *kullanmamanızı tavsiye etmem*. Yeni bir
> >> provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve
> >> belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için
> >> NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile
> >> geliştirilecektir.
>
> >> Ancak bu noktayı dikkate almanızda fayda var.
>
> >> İyi Çalışmalar,
> >> Berke Sökhan.
>
> >> 2009/9/30 Selcuk OZDOGAN <selcuk.ozdo...@gmail.com>

Sidar Ok

unread,
Sep 30, 2009, 8:21:22 AM9/30/09
to altdotne...@googlegroups.com
>>Sırf bu yüzden NHibernate kullanmamanızı tavsiye etmem. Yeni bir provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile geliştirilecektir. 

Microsoft Oracle'in ADO.NET provider ini oneriyor. Bence cok buyuk bir sorun degil update etmek, aralarinda muthi$ farklar yok zaten. 

>> 
* Ben aslında nhibernate i direk alıp kullanmak değil de bir ara katman koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate baya kapsamlı bi altyapı, böyle bir ara katman kullanabilmem için, gidip tüm siniflari bazi base lerden türetmem gerekiyor ki, inanilmaz iş yükü. Gerek de var mı bilmiyorum. Ancak ilerde nhibernate benzeri başka bir yapıya geçersek işimize yarar !?
DDD patternlerini uygulamaya çalışacaksan, zaten Repository'den haberin vardır. Bu tür bi wrapleme ile DB altyapını domain'innde izole etmiş olursun. Kısacası Repository ve ya generic Repository gibi yapılarla NH i wraplersen NH ile ilgili kodu business ına sızdırmamış olacaksın zaten.

Repository guzel $ey, umitli $ey. En guzel sesten en guzel $arkiyi dinlemek gibi bir$ey. 

Ama repository nin amaci NH i abstract etmek degil DB yi abstract etmek. 

Mesela 3-4 repository gerektiren bir operasyonun var, Lazy loading, Transaction vb gibi guzelliklerden faydalanmak istiyorsan bu session i repository ler arasinda payla$tirman lazim. Bu da business layer in da Session gorecek olman demek. 

Ha bu kotu bir$ey midir, degildir bence. 

Ayrica projene gore, lazy loading vs kullanmaya da bilirsin, ama NH a gecmeye de bilirsin ayni mantikla :) Bence NH a gececeksen, NH dan uzakla$tirmaya cali$ma, ORM ozelliklerini kaybetmi$ olursun yoksa. 

Diger konularda katiliyorum, Rhino tools da ve Castle NH Facility de NH la ilgili best practice lere eri$ebilirsin. 

2009/9/30 Berke Sokhan <berke...@gmail.com>

Sidar Ok

unread,
Sep 30, 2009, 8:22:32 AM9/30/09
to altdotne...@googlegroups.com
Fluent NHibernate , XML mapping yerinde kullanabilecegin bir mapping teknolojisi. Open source. 

2009/9/30 Selcuk OZDOGAN <selcuk....@gmail.com>

Selcuk OZDOGAN

unread,
Sep 30, 2009, 8:26:31 AM9/30/09
to altdotnetturkiye

Dolayısıyla repository önermiyorsunuz o zaman?

Peki biraz daha somut bir şekilde, ilk mesajda bahsettiğim gibi nhib
kullanımı
ile ilgili bir kaç ipucu verebilmeniz mümkünmü?

Cevap için teşekkürler.

On Sep 30, 3:21 pm, Sidar Ok <sida...@gmail.com> wrote:
> >>Sırf bu yüzden NHibernate *kullanmamanızı tavsiye etmem*. Yeni bir
> 2009/9/30 Berke Sokhan <berkesok...@gmail.com>
>
>
>
> > Sorularına gelirsek;
>
> > Profesyonel bir projede NH. kullanmadığımı, ancak yine de NH ile ilgilenmiş
> > biri olarak cevap vermeye çalışayım, (bu sorularına Tuna daha iyi cevap
> > verebilir zannımca):
>
> > * ASP.NET <http://asp.net/> uygulamalarinda nhibernate kullanım mimarisi
> >> nasıl olmalı ?
>
> >> Senin de belirttiğin gibi bu işlerin Application eventlerinde yapıldığını
> > görüyorum, dolayısıyla varsayımın mantıklı. Her bir Request bir UnitOfWork
> > şeklinde tasarlanan projeler mevcut.
>
> > * Nhibernate kullanmak üzere gerekli olan tablolardan xml dosyalarını ve
> >> entity sınıflarını otomatik oluşturan bir tool var mıdır?
>
> > ActiveWriter by Gökhan Altınören :)http://altinoren.com/activewriter/
>
> > * Ben aslında nhibernate i direk alıp kullanmak değil de bir ara katman
> >> koyup onun üzerinden kullanmayı planlıyordum ama, nhibernate baya kapsamlı
> >> bi altyapı, böyle bir ara katman kullanabilmem için, gidip tüm siniflari
> >> bazi base lerden türetmem gerekiyor ki, inanilmaz iş yükü. Gerek de var mı
> >> bilmiyorum. Ancak ilerde nhibernate benzeri başka bir yapıya geçersek
> >> işimize yarar !?
>
> > DDD patternlerini uygulamaya çalışacaksan, zaten Repository'den haberin
> > vardır. Bu tür bi wrapleme ile DB altyapını domain'innde izole etmiş
> > olursun. Kısacası Repository ve ya generic Repository gibi yapılarla NH i
> > wraplersen NH ile ilgili kodu business ına sızdırmamış olacaksın zaten.
>
> > * Tam olarak bir ara katman olmasa da, kurumsal uygulamalarda izlenen belli
> >> bir pattern var mıdır nhibernate kullanmak için. Yoksa standart, db işi
> >> yapılacağı zaman, entity ni oluştur, nhibernate sessionına kaydet ve kapat
> >> şeklinde midir?
>
> > Yukarıda kısmen cevapladığımı düşünüyorum, ama NH practician lar başka
> > patternler de kullanıyor olabilir...
>
> > Son sorun hakkında bilgim yok maalesef :)
>
> > Berke Sökhan,
> > İyi Çalışmalar.
>
> > 2009/9/30 Berke Sokhan <berkesok...@gmail.com>
>
> > Selamlar,
>
> >> Oracle için NHibernate kullanacaklara genel bir not düşmek istedim.
>
> >> NHibernate ORacle için MS'in sürücü kütüphanesini kullanıyor
> >> (System.Data.OracleClient). Ancak bilindiği gibi MS geçtiğimiz aylarda bu
> >> Dolayısıyla uzun süre kullanılacak bir sistem geliştirmek için şu sıralar
> >> genelde kullanılan Microsoft OracleClient sürücüleriyle NHibernate üzerinde
> >> geliştirme yapmaya başlamak riskli olabilir.
>
> >> Sırf bu yüzden NHibernate *kullanmamanızı tavsiye etmem*. Yeni bir
> >> provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve
> >> belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için
> >> NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile
> >> geliştirilecektir.
>
> >> Ancak bu noktayı dikkate almanızda fayda var.
>
> >> İyi Çalışmalar,
> >> Berke Sökhan.
>
> >> 2009/9/30 Selcuk OZDOGAN <selcuk.ozdo...@gmail.com>

Sidar Ok

unread,
Sep 30, 2009, 8:37:31 AM9/30/09
to altdotne...@googlegroups.com
Repository onermez olur muyum, oneriyorum tabi. Specification pattern la beraber her data operasyonundan once 3 kez ac karnina alinmali. 

Yalniz repository den beklentilerini sinirlaman lazim. ORM in abstract edilmesi cok acili ve gereksiz bir yol. 

NH la ilgili du$unebildigim ilk $eyler

- nhusers grubuna kaydol. Sorularini sor (buraya ve oraya) 
- Tunayla iyi arkada$ ol. Onu sev koru kolla, arada para gonder, bi ihtiyacin var mi de baklava ismarla. 
- ASP.NET icin, Rhino Tools a bak. Oradaki UoW (Unit of Work) NH la sorunsuz cali$iyor, ve asp.net le ilgili ornekler iceriyor. 
- $irket NH Profiler alsin
- aktif NH blog larini takip edin (Ayend, Davy Brion ve Fabio Maulo )  
- NH FOrge u takip edin (nhforge.org
- BeginRequest ve End request de session larini yaratiyorsun, Session per request iyi bir teknik.
- Session Factory sadece bir kez yaratilsin. NH in caching mekanizmasini herkesin iyi bildiginden emin olun (ozellikle second level cache) 
- Fluent NH, Tolga'nin da soyledigi gibi

WCF konusunda ise, WCF ve NH kullanmayi mantik olarak birbirinden ayirmak lazim. NH i WCF uzerinden publish etmek duzgun bir cumle degil, daha sagliklisi NH kullanan servisleri WCF uzerinden publish etmek olmali. WCF client larin NH hakkinda bir$ey bilmek zorunda degiller. 

Ayrica sisteminin mimarisi de onemli, kac ce$it client in var, 1, 2, 25 ?NH entity lerini direkt networke salmayi mi du$unuyorsun, yoksa DTO yapmayi du$undun mu ? 

Gibi gibi uzar gider... :) 

2009/9/30 Selcuk OZDOGAN <selcuk....@gmail.com>

Selcuk OZDOGAN

unread,
Sep 30, 2009, 8:39:37 AM9/30/09
to altdotnetturkiye
Şimdi biraz inceleme firsati buldum fluent nhib'i.
Gerçekten çok şıkmış.

On Sep 30, 3:22 pm, Sidar Ok <sida...@gmail.com> wrote:
> Fluent NHibernate , XML mapping yerinde kullanabilecegin bir mapping
> teknolojisi. Open source.
>
> 2009/9/30 Selcuk OZDOGAN <selcuk.ozdo...@gmail.com>

Tolga Yıkılmaz

unread,
Sep 30, 2009, 8:46:53 AM9/30/09
to altdotne...@googlegroups.com
wcf için nh bilmesine gerek yok zaten entitylerini yollıyıcan alan tarafta entityleri kendi objelerine ceviricek daha kolay güzel yolu varmıdır fikrim yok ( Listteki her bir entity için dönüp te onu cast etmeye çalışmak sinir bi yol ) daha ii önerisi olan varmıdır acaba

30 Eylül 2009 15:39 tarihinde Selcuk OZDOGAN <selcuk....@gmail.com> yazdı:

Sidar Ok

unread,
Sep 30, 2009, 8:57:43 AM9/30/09
to altdotne...@googlegroups.com
entity leri kar$iya yollamak...bir onceki mailde sordugum sorunun cevabina gore iyidir ya da kotudur diyebilecegimiz bir$ey. 

Vanilla web application sa, yani bi web tier, bi de business tier var, servisleri var, ciftliginde ali babanin ise, entity leri dondur direkt.

Ama web servislerini birden fazla client kullanacaksa, onu yapma. Her client a gore farkli kontrat tasarla, DTO tasarla ve client a gerekeni gonder - bu SOA nin temel kurallarindan biri. DTO - Entity mapping icin AutoMapper kullan. sen kazan, ali baba ve cifligi kazansin, alt.net kazansin.  

2009/9/30 Tolga Yıkılmaz <tolga.y...@gmail.com>

Tuna Toksoz

unread,
Sep 30, 2009, 9:13:40 AM9/30/09
to altdotne...@googlegroups.com
Business seviyesinde transaction acabilmesi icin businessin NH i bilmesine gerek yok direkt, UoWde kullanilan bazi yapilar ile bunu soyutlayabilir
He NH i soyutlamak mantikli mi? O degisir kisisine gore.

Tuna Toksöz
Eternal sunshine of the open source mind.

http://devlicio.us/blogs/tuna_toksoz
http://tunatoksoz.com
http://twitter.com/tehlike




2009/9/30 Sidar Ok <sid...@gmail.com>

Selcuk OZDOGAN

unread,
Sep 30, 2009, 9:18:53 AM9/30/09
to altdotnetturkiye
Şimdi şu detayları da vereyim ben de belki kapsamı biraz daha
daraltırız.
In-house (kurum içi) küçük ve orta ölçekli intranet yazılımları
geliştiren küçük bir ekibiz (2-3 kişi).
Geliştirilen uygulamaların da tamamı web tabanlı ve asp.net.

Dolayısıyla burada herşeyiyle kusursuz bir mimariden ziyade pratik bir
şekilde ve kısa zamanda nhibernate'i
kullanabileceğimiz bir yapı kurmaya çalışıyorum. Yani nhibernatin
tabiri caizse "dibine vurmak" :)
gibi bir amacım yok. Burada nhibernate; kurmaya çalıştığım kurumsal
altyapının sadece orm tarafi,
diger taraflarda da bir ton iş beni bekler :)

Ayrıca ayrıntılı cevap için de teşekkürler.
> 2009/9/30 Selcuk OZDOGAN <selcuk.ozdo...@gmail.com>
> ...
>
> read more »

Berke Sokhan

unread,
Sep 30, 2009, 9:48:23 AM9/30/09
to altdotne...@googlegroups.com
Merhaba,

2009/9/30 Sidar Ok <sid...@gmail.com>

>>Sırf bu yüzden NHibernate kullanmamanızı tavsiye etmem. Yeni bir provider'a geçmek NHibernate ile config seviyesinde hızlıca yapılabilir ve belki de Microsoft OracleClient dışında benim bilmediğm bir Oracle için NHibernate provider (contrib de?) mevcuttur, mevcut olmasa bile geliştirilecektir. 

Microsoft Oracle'in ADO.NET provider ini oneriyor. Bence cok buyuk bir sorun degil update etmek, aralarinda muthi$ farklar yok zaten.

ODP.NET den haberim var tabii ki ve orijinal mesajımda onun kullanılması gerektiği ile ilgili yazının bulunduğu linki de vermiştim ancak algı sorunu yaşayıp NH'in sitesinde (https://www.hibernate.org/361.html) belirtilen aşağıdaki cümleden sadece MS'in driverını destekliyoruzu anladım hatalı olarak...

Oracle 9i and 10g are supported, both using Microsoft driver (System.Data.OracleClient) and using Oracle driver (Oracle.Data.OracleClient).

Görülüyor ki Nhibernate ile ODP.NET i de kullanıbiliosunuz, madem onu kullanın :)

--
Berke SOKHAN

Selcuk OZDOGAN

unread,
Oct 7, 2009, 9:08:10 AM10/7/09
to altdotnetturkiye
Başka fikir paylaşmak isteyen var mı arkadaşlar?
> ...
>
> read more »

Tuncer KARAARSLAN

unread,
Oct 10, 2009, 4:51:58 PM10/10/09
to altdotnetturkiye
Merhaba Selçuk.

Ben yaklaşık 6 yıldır Nhibernate kullanıyorum. Uzun zamandır üzerine
kurumsal projeler geliştiriyorum. Ayrıca tüm Türkiye'de kamuda kullanılan
kimos isimli ürünü de nhibanate üzerine geliştirdim. Son olarak
geliştirdiğim ürün havalimanları için yönetim bilgi sistemidir. Bu sistemde
veri tabanı olarak oracle kullandım ve nhibernate 2.1 versiyonunda
oracle.dataccess versiyonu direkt olarak desteklenmekte ve oracle ile olan
iletişim tekniği çok ciddi performsı da beraberinde getirmektedir.

Uzun lafın kısası 6 yıl önce başladığımda nhibernate bu günkü durumuna göre
çok kısıtlı ve hatalar içeren bir durumdaydı. Bu gün çok güçlü bir veri
iletişim katmanı durumunda. Windows forms ya da web projelerinde büyük
kapsamlı projelerin yönetilmesi için olmazsa olmaz bir katman desteği
veriyor. Alternatif pattern desteklerini kullanmana gerek yok. Nhibernate
ekibinin açık kod olarak dağıtılan kodlarının içerisindeki test kalsöründe
olabilecek pek çok durum inceleniyor. Klasik nhibernate teknikleri ile
yapamayacağınız bir sınır olduğunu düşünmüyorum. Ancak dikkat edilmesi
gereken en önemli nokta lazy loading yapısı. Eğer blob yapısında veriler
içeren bir veri tabanı tasarımı yapıyorsanız mutlaka mutlaka byte[]
verilerini ekstradan bir Ilist içerisinde tutmak ve lazy true yapısına sahip
olmasını sağlamak gerekli. Bu tarzdaki ince davranışları sergilediğinizde
üretemeyeceğiniz, yönetemeyeceğiniz bir proje olmayacaktır.

Ayrıca yeni bir framework kuracağınıza göre, mutlaka IOC yapısını da dikkate
alın.

İyi çalışmalar

--------------------------------------------------
From: "Selcuk OZDOGAN" <selcuk....@gmail.com>
Sent: Wednesday, October 07, 2009 4:08 PM
To: "altdotnetturkiye" <altdotne...@googlegroups.com>
Subject: Re: NHibernate Kullanımı Nasıl Olmalı
Reply all
Reply to author
Forward
0 new messages