Kategoriler


SON YORUMLAR
dinozorunsesi
ne yapsam bilemiyorum galiba mühendis olacağım
kelmamut
tatar ramazan karı ve iş bulamayan ezik bi orosbu çocuğusun az ötede ağla derdin zengin olmaksa mühendislk değil tıp okucaktın yanlış okumuşşun karı kızsa derdin gidip pezevenklik yapacaksin mühendislikle alakası yok senin hayatın kaymış olm benim dayım bilgisayar müh kocaeli mezunu amerikada paraları götürüyo 10k dolar maaşla sen anca ağla ezik orospu çocuğu
disko_anksiyete
dalga gectigin kamyon soforleri asgari ucretin cok ustunu aliyorlar ve is bulma sorunlari yok :D aynisini yazilim sektoru ve bilgisayar muhendisligi icin soyleyebilir misin? 4 sene okuyup lisans diplomani aldiktan sonra yurtdisindaki sirketlerde calisabilecek nitelikte olmayacaksin, yurticindekiler de asgari ucretten ya da hatta staj ucretinden baslatip amina koyacaklar, haftasonunu bile sikip atacaklar :D aptal pic seni.
Eray
Java, C ve C++ dillerindeki programlama sorularının çözümlerinde ve projelerinde hızlı ve nitelikli bir şekilde yardımcı olabilirim. Projenin başarılı bir şekilde çalışacağını garanti ederim.
Eray
AA ile geçtiğim ve sizin de yüksek notlar alacağınızı garanti ettiğim programlama dersleri için JAVA, C ve C++ programlama dillerinde özel ders verebilirim. Aynı zamanda lablarınıza, ödevlerinize hazırlanmanız için örnekler çözüp online eğitim sürecinde size destek olabilirim. Whatsapp: 05424280350
Çınar Kılınç
Ufhgry
kamyoncu bilgisayar mühendisi
@disko_anksiyete ben bu yorumdan sonra kamyon şoförlüğüne başladım arkadaşlar hakkınızı helal edin...:(
siber
hocam şu yorum sistemine bi authentication ekleyin ya da onay sürecinden geçsin bali, nokta diye mesaj atan var, 100 kere reklam veren var.
someone
Kısa ve öz bir yazı olmuş.Bunun avantajı ise az çok kafasında soru işareti bulunan birisi uzun uzadıya giden yazılarla vakit kaybetmeden hızlı bir şekilde sorularına yanıt bulabilir.Teşekkürler.
disko_anksiyete
Tatar Ramazan her açıdan haklı, sizi çıldırtan da bu sanırım. Ülkede 1 yılda bu sektörde kaç tane önlisans ve lisans mezunu çıktığını hesaplayın. Piyasadaki iş ilanlarına göz atın, 30 tane teknoloji bilen insan üstü programcı arayan gerçekçilikten uzak ilanlara bile 5.000 üzeri insan başvuruyor çaresizlikten, işsizlikten ve yeteneklerini, bilgisini değerlendirebilme ümidi ile. Ve çalıştıkları maaşlar hakkındaki bilgiyi de zaten devletin belirlediği minimum mühendis maaşına göz atarak aşağı yukarı anlayabilirsiniz, iddialı ya da hayat idame ettirecek sayılarda maaşlar kesinlikle verilmiyor. "Ben girişimci olurum, hayalimdeki uygulamayı yapacğaım ve milyonlar kazanacağım görürsünüz ulan!" fikrine de sıkı sıkıya bağlanmış olabilrsiniz ancak, görmüş olduğunuz o popüler uygulamalar ve getirileri absürt derecede nadir ihtimallere dayalı Yemeksepeti.ni, getir.i görüp gaza gelip kendi milyon dolarlık uygulamanızı yapabileceğiniz olası gelebilir ancak, peki yıllar boyu üstünde çalışılıp kimsenin kullanmadığı uygulamalar, biten kariyerler, batan start-up.lar, edilen intiharlar? Yurtdışına gitmeyi de unutun. Yurtdışındaki eğitim standartları ve mühendis standartları ülkemizdeki ile kıyaslanamaz bile. Bize 4 yılda öğretilmeyen, hatta adı bile sunulmayan teknolojileri adamlar 1 sömestırda uygulamalı öğreniyor. Yani hiçbir Avrupa firmasının, 3. dünya ülkesindeki bilmemne üniversitesinden mezun bir mühendise ihtiyacı yok, ki ihtiyaçlarını karşılayamacağınızdan da eminim. Burada gelip yazılımcı maaşını savunanlar ya tuzu kuru, torpilli orospu evlatlarıdır, hani var ya o görmüş olduğunuz kullanmış olduğunuz bozuk sikten uygulamaları ve siteleri geliştiren eğitimsiz şempanzeler ordusu, heh onlar. Ya da, daha üniversite öğrencisi olup beyni yıkanmış, hayatında bu meslekten 5 kuruş kazanmamış ama bir anda milyonlar kazanacağı ıslak rüyasını aklından bir anlığına ayırmayan embesil Türk üniversite öğrencileridir. Sektör zor, yeteri kadar ödüllendirici değil hatta iş bile bulunamıyor şu an bulunduğumuz noktada. "Kendini geliştir" diyen sakatlar için de, ileri düzey İngilizce bilen ve nesne tabanlı programlama dillerinde (Java, C#) çeşitli alanlarda çalışmış birisi olarak (game development, desktop app development) bunları yaşadım, bunları savunuyorum. Aksini savunuyorsan bırak bakalım Linkedin profilini de başarılı bilişimci görüp feyz alalım değil mi? İşkembeden herkes sallar, herkesin kafasında bir kariyer planı vardır. Önemli olan gerçekleri hayallerden ayırt edebilmek. Ne kadar para kazanmaya istekli olduğunuz inanın, hiç sikimde değil. Aldığını sanmış olduğunuz eğitim de sizi zorluyor olabilir ama kafanızı kumdan çıkartıp globalde yapılan işlere, global kalitede programcılara göz atın. Sonra da siktirin gidin.
ramazansavar
ya ramazan ne 10 programı biliyon da kim seni takmıyor, detaylı açıkla bakalım.
Tatar Ramazan
Zavallı mühendisler en zavallıları da sizsiniz. Eniştem muhasebecikilten sigortacılıktan bi ton para kazanıyor siz 8-10 bin tl.ye talim ediyorusunuz. O da canınızı çıkartıyorlar. Müdürler bağırıp çağırıyor size. Millet tatil yerlerinde bahşişlerle iyi para kazanıyor karılarla alem yapıyor. Adam ev aldı karı aldı antalyada. Siz de firmalara eşeklik yapın. Stres sıkıntı çekin. Bi bok yok bu meslekte mezun olunca görürsünüz. 12 yıl deneyimliyim. 10 teknoloji biliyorum 10 bin tl bile vermiyorlar. Lanetli bilişim sektörü. Adaletsizlik saçmalık sıkıntı had safhada. Yazacam madde madde hepsini bekleyin.
Tatar Ramazan
Zavallı mühendisler en zavallıları da sizsiniz. Eniştem muhasebecikilten sigortacılıktan bi ton para kazanıyor siz 8-10 bin tl.ye talim ediyorusunuz. O da canınızı çıkartıyorlar. Müdürler bağırıp çağırıyor size. Millet tatil yerlerinde bahşişlerle iyi para kazanıyor karılarla alem yapıyor. Adam ev aldı karı aldı antalyada. Siz de firmalara eşeklik yapın. Stres sıkıntı çekin. Bi bok yok bu meslekte mezun olunca görürsünüz. 12 yıl deneyimliyim. 10 teknoloji biliyorum 10 bin tl bile vermiyorlar. Lanetli bilişim sektörü. Adaletsizlik saçmalık sıkıntı had safhada. Yazacam madde madde hepsini bekleyin.
EsMer
Bence çok mantikli.

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
NHibernate için Veri Erişim Katmanını Otomatik Oluşturma
Bilgisayar Mühendisleri Kaç Para Alır?
Run-Time (Çalışma-Zamanı) Run-Time (Çalışma-Zamanı)
Twitter'in rakibi bir Türk: whispurr.com
Sanal Bellek Nedir?
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Bilgisayar Mühendisi olmanın 10 iyi yönü.
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?
Para ile ödev yapmak üzerine
Transact-SQL - T-SQL - SQL NEDİR?
Beryl Projesi - Grafiksel işlemleri neden ekran kartı varken işlemci yüklensin ki?
Bilgisayar mühendisliği öldü?
Java'nın kurucusu Google'a transfer oldu
Para ile ödev yapmak üzerine
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
CSS Dersleri - CSS Nedir
Transact-SQL - T-SQL - SQL NEDİR?
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Para ile ödev yapmak üzerine

Bilgisayar Mühendisleri Portalı

NHibernate için Veri Erişim Katmanını Otomatik Oluşturma

NHibernate için Veri Erişim Katmanını Otomatik Oluşturma

Enterprise yazılım geliştirme projelerinde rol alan yazılımcıların sık karşılaştığı sorunlardan biri, birden fazla veritabanı destekli kod geliştirmekdir. Neden veritabanı bağımsızlığı; Sql Server 2000 tabanlı yazılım geliştirirseniz, müşterileriniz "Bende Oracle varken neden Sql Server kullanayım" der ya da tersi, siz Oracle'da geliştirirsiniz, müşterileriniz "Ben Oracle lisansına para veremem, maliyeti yüksek" tepkisi verebilir.

Bu durum .Net'den önce Java zamanında farkedilmiş ve çeşitli çözümlerle aşılmıştır. Bu çözümlerden en yaygın ve kullanışlı olanı ana amacı bizi relational yapıdan kurtarmak olan ORM (Object Relation Mapping) yazılımları kullanmaktır.

ORM detaylı bir konu olduğu için girmeden yüzeysel bu çeşit toolların temel birkaç getirisini inceleyelim:

  • Tek kodla, kodu değiştirmeden kullandığınız ORM tool'unun desteklediği tüm veritabanlarını otomatik siz de desteklemiş olursunuz. Tabi bundan böyle stored procedure olayını unutup VIEW kullanmaya ağırlık vermeniz gerekmektedir. Sorgu cümlelerinizi zaten ORM toolu otomatik kendisi oluşturur.
  • Kodlama aşamanızda Tablo/Row yapılı DataSet gibi relational sistemler yerine tablonun içerdiği mantıksal nesnelerle işlemlerinizi yaparsınız, yani kodlama felsefeniz relational yapı yerine nesneye yönelik bir yapıya döner. Örneğin; relational yapıdaki KULLANICI ismindeki tabloya KULLANICI_ADI "ali" olan yeni bir satır INSERT etme olayı nesnel yapıda KULLANICI nesne kolleksiyonuna ismi "ali" olan yeni bir KULLANICI nesnesi ekleyip değişiklikleri kaydetmek şeklinde yorumlanabilir.
  • Dinamik değişken parametreli sorgularda geliştirme hızınız çok artar. Örneğin ana ekranınızda 10 farklı parametreli bir filtre olsun. Kullanıcı bu filtrelerden istediklerini seçebilir olsun ve her seçtiği filtre sorguya dahil edilmeli olsun. Bunun için ya kendiniz kod tarafında select sqllerinizi oluşturursunuz ki zahmetlidir ve birden fazla veritabanı desteliyorsanız işiniz çok daha zorlaşır, yada dolu olsun olmasın tüm parametreleri stored procedure'e yollarsınız tüm kombinasyonlarla o başa çıkar ki bu daha da zordur, sproc'da SELECT stringi oluşturup çalıştırmanız gerekir. ORM toollarında ise Where'den sonra şunları ekle demek yeterlidir, hedef veritabanına uygun sql'i kendisi oluşturur.
  • Veri erişim katmanınız çoğu ORM toolu tarafından otomatik oluşturulur, çok daha az kodla veritabanı işlemlerinizi gerçekleştirirsiniz ve okunurluğu daha yüksekdir.

Konumuza dönersek; çoğunuzun bildiği gibi Java tarafında bir numaralı ORM toolu Hibernate'dir, .Net tarafında ise 50'den fazla ORM toolu piyasaya sürülse de Hibernate kadar büyük çaplı olan bir tane şu an için yok. Ama benim kişisel tercihim piyasada da en yaygın olanları NHibernate ve Llblgen 'dir (Lblgen çok kolay kullanımlı, pratik ve templatelerini kendisi hazırlayan hoş bir program olsa da lisans ücreti var).

Şu an mevcut olan NHibernate 1.0.2, Java'daki Hibernate 2.1'in .Net uyarlaması olmasına karşın Hibernate'in 3.2 sürümüne kadar gelmiş olması bu konuda Java'cıları geriden takip ettiğimizin göstergesi. NHibernate'in malesef kendisine ait bir otomatik kod oluşturma mekanizması yok. Yani normalde veri erişim katmanını NHibernate için kendimizin hazırlaması gerek ve bunun için de her sınıf (object/relational birebir yapıda bir sınıf bir tabloya karşılık gelir) için bir XML mapping dosyası bir de .Net sınıfına ihtiyacınız var (sınıfları ayrı dosyalara böldüğümüzü farzedersek kullanıdğınız dile bağlı olarak örneğin c# için .cs uzantılı ayrı bir dosya gerek).

Eğer veritabanını tablo yapısından nesnel bir yapıya çevirmek istemiyorum, tablolarla nesnelerin birebir eşleştirildiği bir yapıyı yazılım otomatik oluştursun diyorsanız, piyasada bu işi yapan pek çok yazılım var. Bunlardan bazıları kendi başına bağımsız yazılımlar şekline yapılmış bazıları da CodeSmith (ücretli) ve MyGeneration (ücretsiz) gibi yazılımlar için template şeklinde hazırlanmıştır.

 

 

Sonuç; benim ekte verdiğim kod da MyGeneration için bir templatedir. Yaptığı iş de veri erişim katmanını Visual Studio 2003 yada 2005 için ayrı bir c# projesi olarak otomatik oluşturmaktır (relational yapıyla birebir eşleşen nesne yapısı oluşturur). Yazdığım template k-dub, Gustavo ve spunlogic'in templateleri üzerine yazılmıştır. Yaptığım değişiklikler:

  • Visual Studio 2003 ve 2005 için proje dosyalarını otomatik oluşturma özelliği eklendi
  • Lisans mesajı kutusu eklendi
  • Binary kolon desteği eklendi
  • View'lar için sahte primary key atama özelliği eklendi
  • NHibernate ile bir select işlemi yaptıktan sonra IsChanged flagının bozulmasına önlem olarak nhibernate kullanımı için ayrı property tanımlama özelliği eklendi
  • MarkAsDeleted, IsChanged ve IsDeleted fonksiyonları lazy loading modunda virtuala dönüştürldü (NHibernate 1.2.0 Alpha 1 uyumluluğu için)
  • Birkısım eksik double atamaları eklendi.
  • Spunlogic'in kaydetindeki bir hata giderildi
  • Türkçe i/ı karakter sorunu çözüldü
  • Viewlardaki çift kolon tanımı hatası giderildi
  • Viewler salt-okunur yapıldı
  • Varolan bir proje dosyasının üzerine yazım yaptığınızda Source Safe gibi kod kontrol yazılımlarının kullandığı tagların eski proje dosyasından yeni proje dosyasına taşınması gerçekleştirildi

Dosyayı MyGeneration'ın sitesine de "Serdar's NHibernate Object Mapping 1.2" tanımı ile gönderdim: http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=158a7d34-a15e-40f9-8399-255f8f85f76c

Burada en büyük artı tabiki artık proje dosyalarını da otomatik oluşturabilmesi, düzeltilen en önemli hata da Türkçe sistemlerde bu tamplateleri kullanırken karşılaştığımız en ciddi sorun olan isimlendirmelerdeki Türkçe büyük "I" harfinin küçük "i" yerine küçük "ı"ya dönüşmesiydi.

Yapmanız gereken işlem kabaca; MyGeneration'ı indirip kurup bu template'i kullanarak veri erişim projesini oluşturup solution'ınıza eklemek ve NHibernate'i indirip bin dizinindekileri kendi bin dizinizine kopyalayarak dökümanına göre gerekli ayarlamaları yapmakdır.

 serdar_nhibernate.zip (14K)

.


   ©2006-2007 Serdar Irmak serdar@argelab.net
http://www.argelab.net

Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

Maho(22.7.2011 09:01:19)
Güzel bi makale sağol
%0 %0 %0
Katılıyorum Çekimserim Katılmıyorum



Serdar(25.6.2009 12:37:46)
2 sene öncesinin makalesi olduğu için yeni gelişmelerle yazılanların bir kısmı geçerliliğini yitirdi.
%67 %17 %17
Katılıyorum Çekimserim Katılmıyorum






Copyright© 2001-2020. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.