23 Kasım 2014 Pazar

URI-URL, HTML, CSS, JavaScript, ODBC, JDBC, ADO.Net, Entity Framework, ORM, Hibernate


Uniform Resource Identifier (URI)

  URI, İngilizce “Uniform Resourse Identifier” kelimelerini belirtmektedir. Türkçe anlamı ise “tekdüzen kaynak tanımlayıcısı” dır.

    URI, web üzerinde belli bir kaynağa (internet sitesi, belge, resim vb.) ulaşmak için kullanılan 1994 te Tim Berners-Lee ın oluşturmuş olduğu belli bir formata sahip karakter dizisi,metin dir. Bu format UNIX dizin yapısı formatındadır. Belirli protokolleri kullanarak, bir ağ üzerinden bir kaynak, genellikle World Wide Web(WWW) temsilleri ile etkileşimi sağlar.Her URI somut bir sözdizimi belirtme düzenleri ve ilgili protokolleri tanımlar.









    URI in sözdizimi(syntax) ı şöyledir;
scheme://domain:port/path?query_string#fragment_id
“scheme” nin alabileceği değerlere en temel örnekleri verecek olursak “http” ve “ftp” diyebiliriz. 





 





URI'nın en yaygın formu uniform resource locater(URL), sık başvurulan bir web adresi olarak kayıt dışı çalışır. Çok nadir görülen kullanımı uniform resource name(URN), özel ad alanları kaynağının belirlenmesi için bir teknik sağlayan tanımlı URL'ler için tasarlanmıştır.







  Uniform Resource Locater (URL)

İnternet üzerindeki bir web sayfasının bulunabilmesi için iyi ve sistemli bir adresleme sistemi gereklidir. Bunu yapmak kolaydır. Çünkü, internetteki her web sunucusunun bir IP (Internet Protocol) numarası olduğunu biliyoruz. Anımsamayı kolaylaştırmak için, IP numarası yerine alan adı (domain name) kullanılır.  Web sayfasının sunucuda hangi adla hangi klasöre konulduğu da bilinmektedir. Bunların belirtilmesiyle web sayfasının adresi ortaya konmuş olur.Web sayfasının bu yöntemle oluşturulan adresine URL (Uniform Resource Locator) denir. Buna Düzgün Kaynak Bulucu diyebiliriz. 


    Bir web sayfası için URL adresinin üç temel bileşeni vardır ve şöyle yazılır: 
Örnek:  http:// www.mku.edu.tr/myo/antakyamyo/
Bu URL, web tarayıcısına şunları söylemektedir:   Kullanılan protokol http dir. Sunucunun alan adı mku.edu.tr ‘dır. (Alan adı verilince, sunucunun IP numarası DNS sistemi tarafından bulunur.) Açılacak web sayfasının adı index.html dir.

    Tarayıcılar yalnız WWW sayfalarını görüntülemek için kullanılmaz, Internet Explorer ve Netscape tarayıcıları bu URL şemalarından çoğuna doğrudan bağlantı kurabilir. Gopher server ve WAIS veritabanlarına bağlantılara uygun olmalarına rağmen, FTP bağlantılarında, özellikle sıkıştırılmış dosyalarla çalışırken sorun çıkartabilirler.


     URL şemaları, iki nokta üstüste ":" kullanılarak diğer metinden ayrılır. Eğer iki nokta üstüste işaretinden sonra, taksim işareti "//" varsa, WWW, FTP ya da GOPHER üzerinden dosyalara ulaşılacağını anlatır. (http://www.microsoft.com, mailto:president-**-whitehouse.gov).

Kullanıcı adı ve şifre içeren bir örnek;
 
tp://username:password*--**domain.name/pub/

URL adresinin son bölümü kullanıcının istediği spesifik bilgiyi, e-mail adresini ya da istenen dosyanın tam yolunu gösterir. Bu bilgi adres bölümünden taksim işareti "/" ile ayrılırlar. Kullanıcı yalnız en üst düzeye erişecekse, genel olarak spesifik bir yol yazmasına gerek yoktur. Örnek:  


http://www.microsoft.com/pages/misc/whatsnew.htm
 
    http, bu adrese ulaşma için bir tarayıcı kullanılması gerektiğini belirtir. www.microsoft.com, Web server olarak kullanılan host makinadır. /pages/misc/whatsnew.htm ise, tarayıcının göstereceği dosyanın tam yoludur. Dikkat edilirse yol aynı DOS ortamında olduğu gibidir. /pages bir dizin, /misc bir alt dizin ve whatsnew.htm asıl dosyadır.

    Eğer bir FTP ya da Gopher adresi taksim işareti ile bitiyorsa, adresin bir dosyayı değil bir dizini gösterdiği anlaşılır. Eğer taksim işareti ile bitmiyorsa bir dosya ya da bir dizini gösteriyor olabilir. İstenen adrese gidene kadar ne olduğunu bilmenin bir yolu yoktur. Eğer istenen dosya Web server üzerinde yoksa server bu durum için bir default (Varsayılan) dosya gönderir.
  
URL şemaları ve açılımları
  • ftp:          File Transfer Protocol
  • gopher:   Gopher Protocol
  • http:        Hypertext Transfer Protocol
  • mailto:     Email
  • news:      Net News Transport Protocol
  • wais:      Wide Area Information Protocol

Hypertext Markup Language (HTML)

    Html, World Wide Web'in bilgi görüntülemekte kullandığı dosya 
formatıdır. Tarayıcılar tarafından yorumlanan sayfalardır. Herşeyden
önce bazen yanlış anlaşıldığı gibi HTML bir programlama dili değildir.
HTML bir  mark-up (işaretleme) dilidir, yani tag denen özel işaretler-
le bir yazının tümünü ya da sadece bir  kısmının görünümünü ve/veya
işlevini değiştirmeye yarar. Örneğin herhangi bir tag olmadan default 
yazı tipinde görünen bir yazı, HTML içinde önüne ve arkasına 
<i> ve </i> işaretleri gelince bu şekilde italik görülür.
 
HTML İle Neler Yapılabilir? 
 
-  Metin Biçimlendirme 
-  Liste 
-  Bağlantılar 
-  Resim Kullanma 
-  Tablolar 
-  Çerçeveler
-  Formlar  

HTML5 

  HTML5, İnternet'in çekirdek teknolojilerinden HTML işaretleme standardının beşinci sürümüdür.Internet EXplorer,Mozilla Firefox ve Opera arayıcılarının güncel sürümleri tarafından kısmen desteklenmektedir. Kısaca H5 Google Chrome ve Safari tarayıcılarının CSS desteğiyle ne kadar düzenli ve sağlam bir yapıda kodlanırsa kodlansın yine de fazladan yazılan kodların işlevselliği bozduğu bilinmektedir. Bu yüzden HTML 5 bu ihtiyaçları karşılamak adına geliştirilmeye başlanmıştır. Video paylaşım sitesi Youtube, deneme aşamasında HTML5'i kullanıcılarına sunmaktadır.

   Güncel sürümleri üzerinde deneme aşamasında da olsa çok daha iyi bir şekilde çalışmaktadır. Günümüzde kullanılan HTML 4.1 sürümü,
   HTML5 kullanmak aynı zamanda UI (kullanıcı arabirimi) mühendislerinin ve back end (sunucu uygulama) geliştiricilerinin sadece tek codebase kullanımından yararlanabiliyor olmaları demektir. Yapının temelleri aynı kalsa da, her platforma entegre edilmiş back end layerlar ve görüntüler olabilecektir. Bu, birbirine bağlı bir ürün tecrübesinin yaratılmasına yardım eden ürün çizgisinin karşısında, gelişimin yayılma sürecini hızlandırmaktadır.
   Ses veya film etiketleri gibi birçok spesifik yönleriyle birlikte kullanılması gereken HTML 5, sadece bir biçimleme dili olmasından ziyade web uygulamaları yaratmakta da kullanılabilmektedir. CSS3 ve JavaScript ile birleştirmek çok daha güçlü uyumlu ve sağlam uygulamaları mümkün kılmaktadır. Uygulamalar bu sayede binlerce cihazda birçok ihtimale uygun şekilde kullanılabilmektedir. Özellikle de iliştirilmiş platformlar ve bağlanmış cihazlarla çok daha güçlü olacaklardır.
HTML5 tüm HTML Sürümleri (HTML1.0 vb) ile uyumludur.


 
Cascading Style Sheets (CSS) 
  
 


    Css internet sayfalarının görünümünü değiştiren bir tanım dosyasıdır. CSS kendine has kuralları olan bir tanım dilidir denilebilir. CSS Sayfa içersindeki her bir elemana ait farklı özellik atamayı sağlar.
 

Css Özellikleri:

  • Html sayfasındaki nesnelerin görüntüsünü belirler
  • Html 4.0 sürümü ile stil dosyaları geliştirilmiştir
  • CSS ayrı bir dosyada *.css uzantısı ile saklanabilir. Bu işlem sayfanın daha hızlı açılmasını sağlar
  • Elemanlar üzerinde style="" parametresi ile özel kısa tanımlar yapılabilir

HTML ilk üretildiğinde yazı rengi ve boyu gibi özellikleri tag´lar ile tanımlayacağı düşünülmedi. ilk Html sürümünde aşağıdaki gibi temel taglar kullanıldı.


<h1>Başlık yazısı</h1>

<p>Paragraf yazısı</p>



Daha sonra html 3.2 sürümüyle <font> gibi taglar sunulduğundarenk ve yazı boyu gibi alt özellikler gelişmeye başladı. Fakat çok büyük web sayfalarında bu durum tasarımcı için sıkıntılı olmaya başladı. çünkü sonradan doğru tagı bulmak ve değiştirmek zorlaşıyordu.

Bu sorunu çözmek için Dünya internet topluluğu (W3C) html 4.0 sürümü ile CSS yapısını geliştirdi. Böylece boyut ve şekil bilgileri sayfada olmak yerine CSS uzantılı tek bir dosyada toplandı. Bu sayede web tasarımcı sayfanın görünümünü değiştirmek istediğinde tek yapması gereken CSS dosyasını açmaktı. böylece web sayfasında bir anda birçok sayfa değişmiş oluyordu.
 

CSS' in W3C Standartları:

CDD Validator 

CSS kodlaması dünya Web Birliği' nin belirlediği standartlara sahip olmalıdır. Bu standartlara uyulması hem görüntü birliği açısından hem de Google dostu olmasından önem taşımaktadır.
3C Bilişim tüm müşterilerinin web tasarımlarını standart olarak hem XHTML hem de CSS olarak W3C Standartlarına uygunluğunu garanti etmektedir. Bunu da sayfaların altına koyduğumuz doğrulama linkleriyle ispat etmekteyiz.



JavaScript(JS)

      HTML dili her ne kadar metinler üzerinde neredeyse her türlü düzenlemeyi yapmamıza izin verse de, zayıf kaldığı bazı yönler vardır; mesela HTML bize web sayfalarına bir 'iş' yaptırtma, onları değişik olaylara veya durumlara duyarlı hale getirme imkanı sunmaz. Bu eksikliği Netscape firmasının yetkilileri de farketmiş olacak ki Aralık 1995 tarihinde, C dilinin browser'lara uyarlanmış hali diyebileceğimiz
   JavaScript'i piyasaya sürdüler.Tam bu dönemde Sun Microsystems Pascal ve Delphi dillerinden esinlerek oluşturduğu 'Java' isimli bir programlama dilini piyasaya sürmek üzereydi.     Netscape'in piyasaya sürdüğü script dilinin ismini JavaScript koyması, o dönemde çok telaffuz edilen ' Java' kelimesinin popüleritesinden yararlanmak adına uyguladığı bir pazarlama stratejisiydi, yani pek çok kişinin düşündüğünün aksine Java ile JavaScript arasında isim benzerliği hariç hiçbir benzerlik yoktur.
Bir süre sonra Microsoft da olaya el attı ve JavaScript'le neredeyse aynı olan JScript'i piyasaya sürdü.Fakat sonra bu diller farklı yönlere doğru geliştiler. Şu anda Netscape tarayıcısı JScript'i tanımıyor, fakat Explorer her iki script'i de tanıyor. Yine de iki tarayıcının JavaScript'i yorumlamaları bazen farklılık gösterebiliyor.

'JavaScript nedir?' sorusuna dönersek :
  • Netscape'in piyasaya sürdüğü script dilidir.
  • JavaScript HTML kodlarının içine yazılır. Yazılan kodun bir JavaScript kodu olduğu browser'a <script>...</script> etiketleri ile bildirilir.
  • Tıpkı HTML gibi, JavaScript kodları da yorumlanmak için bir browser'a ihtiyaç duyarlar, yani sonuçta '.exe' uzantılı, bağımsız olarak çalışabilecek bir dosya oluşmaz.
  • JavaScript bir olay halinde işler; olay JavaScript açısından ziyaretçinin bir yere tıklaması, bir tuşa basması vs. olabilir.

JavaScript ile neler yapılabilir?

     JavaScript ile bir web sayfasına yukarıda tanımladığımız biçimde herhangi bir olayın gerçekleşmesi halinde herhangi bir iş yaptırabiliriz. Örnegin sayfada bir butona basıldığında sayfadaki bir 'text' kutusunun içine 'Click!' yazdırabiliriz. Burada olay ziyaretçinin butona tıklaması, iş ise text kutusuna 'Click!' yazılmasıdır... Javascript dilinde neredeyse olası her olay tanımlanmıştır, dolayısıyla yapılabilecek şeyler çok geniştir.
Javascript'i öğrenmeye geçmeden önce bir öneri: Sadece gerektiği zaman Javasript'i kullanın. Gereksiz kullanımlar sayfanın boyutunu şişireceği gibi, sayfanızın estetiğini ve kullanışlılığını de olumsuz yönde etkileyecektir.

 Web Server

 








 Web sunucusu, Hosting ya da "barındırma" işlemini İnternet protokolü üzerinden sunan bir sunucudur. Barındırma ya da hosting, Web sayfalarını İnternet'te yayınlamak için gerekli alanın kiralanmasıdır. Diğer bir ifade ile hosting, bir Web sitesinde yayınlanmak istenen sayfaların, resimlerin veya dokümanların İnternet kullanıcıları tarafından erişebileceği bir bilgisayarda tutulmasıdır.
Bir Web sitesi kurmak için dosyaların saklanacağı bilgisayar bir ev bilgisayarı olmamalıdır, çünkü gerekli program ve donanımı olsa bile İnternet bağlantısının veri yükleme hızı (upload) bu iş için genelde yetersizdir.
İnternet'te site yayınlamak için özel olarak üretilmiş, İnternet'e hızlı bağlantısı olan, yüzlerce kullanıcıya aynı anda hizmet verebilecek bir bilgisayarda (server, yani sunucu) dosyaların saklanması gerekir. Web siteye ait dosyalar için depo vazifesi gören ve İnternet kullanıcılarının erişimine sunan bilgisayarlara Web sunucusu (web server), bu veri saklama ve yayınlama işlemine de Web hosting denir.


Open Database Connectivity(ODBC)




ODBC’NİNOpen Database Connectivity bir uygulama programlama arabirimidir. Yani API’dir. (APPLİCATİON PROGRAMMİNG INTERFACE). Bu programcıya veritabanında bir program çıkarmasını sağlar. Bir veritabanı ile etkileşimli olarak program kodu yazdığımız zaman bu kod genellikle veritabanına ait dilin komutlarıdır. Eğer siz Access, Fox ve Oracle veritabanlarında program yapmak istediğinizde üç farklı veritabanı dilinde kod yazmanız gerekir. Bu biraz korkutucu ve zor olabilir. Bu yüzden ODBC’yi bilmek gerekir.
ODBC ile etkileşimli olarak programlamada sadece ODBC dilinde kodlamayı bilmeniz gerekir. (ODBC LANGUAGE: ODBC API FONKSİYON ÇAĞIRMA VE SQL DİLİNİN BİR KOMBİNASYONUDUR). ODBC yöneticisinin (ODBC MANAGER) nasıl bir veritabanı hedefliyorsanız onunla ayarlanması ileride şekil olarakta gösterilecektir. Veritabanının ne tip olduğuna bakmayarak, tüm fonksiyon çağrımlarınızı ODBC API’de olacaktır. Tüm yapmanız gereken ODBC sürücüsünü kurmak kullandığınız veritabanı tipine göre.
NOT: Win32::ODBC arayüzleri 32 bit versiyon ODBC içindir. Eğer siz eski 16 bitlik versiyonu kullanıyorsanız sonuçları önceden tahmin edelimez.  ŞU ANKİ VERSİYONU NEDİR?
ODBC API’nın sürümleri arasında ufak tefek farklılıklar vardır. ODBC’nin son sürümü 3.0’dır. Bu API’nin gözden geçirilmiş halini sunar. Sürüm 1.0, 2.0, 2.5, 3.0 ve şimdi 3.5’da API’lerinde bazı değişikliler vardı.
ODBC’yi kurduğunuz zaman makinenizde ayrıca ODBC yöneticiside kurarsınız.
Win32::ODBC, ODBC API 2.0 özelliklerini uygulamak için yazılmıştır. ODBC 3.0’dan itibaren geriye uyumludur bu yüzden herhangi bir uyum problemi oluşturmaz.
ODBC 3.0 sürücü yöneticisi kullanılırsa :
- Bir ODBC 3.0 uygulaması ODBC 3.0 sürücü ile çalışır.
- Bir ODBC 3.0 uygulamsı ODBC 2.X sürücü ile çalışır. Fkat uygulama sadece ODBC 2.X özellikleri kullanır.



 


Java Database Connectivity(JDBC)



  Java ile ilişkisel bir veritabanına erişmek ve verisel işlemler yapmak istiyorsak program-veritabanı arasındaki köprüdür JDBC. JDBC programdan bağımsız bir şekilde yazılarak farklı programlarda kullanılabilmektedir.

JDBC ile herhangi bir veritabanına bağlanarak SQL komutları ile verilere erişebildiğimiz bir yapıdır. Kullanılan veritabanına göre bağlantı çeşidini değiştirmemiz yeterli olmakta.





  • Datasource bağlantısı yapabiliriz
  • Select ve update sorgusu yazabiliriz 
Alttaki örnek bir JDBC işlemi verilmiştir
Örnek bir connection işlemi :

Connection con = DriverManager.getConnection("jdbc:sqlserver://url","username","connection");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from abc");
while(rs.next()){
String deger = rs.getString("Kolon1");
}
  • DriverManager : Veritabanı ile connection sağlar
  • Stametement  : Yazdığımız SQL sorgularını veritabanına taşır ve ResultSet objesini instantiate eder.
  • ResultSet : Query sonucunu dönderir




JDBC kullanmaya başlamaya karar verdiysek genellikle yapacağımız adımlar şunlar. (Bu adımları tek tek ileriki yazılarımda inceleyeceğiz)

  1. Veritabanımız ile bağlantı oluşturacağız.
  2. JDBC Driver’imizi yükleyeceğiz.
  3.  Statement/PreparedStatement sorgularımızı oluşturacağız.
  4. Resultset oluşturacağız
  5. Ve son olarak oluşturduğumuz bağlantıyı/statementi/resulset’i kapatacağız.

JDBC ile bu genel bilgi yeter diye düşünüyorum. Sonraki JDBC yazılarında derine inmeye devam edeceğiz.

  
ADO .Net

   Ado.net, Microsoft .net platformunun özelliklerini destekleyen XML standardı üzerine kurulmuş bir veri erişim teknolojisidir. COM desteği gerektirmez ve esnek bir yapıya sahiptir. Ado.net ismi ActiveX Data Objects .net’ten gelir ve Ado standardının üzerine kurulmuştur.
    Ado.net .net platformunda geliştirilen uygulamaların veri tabanı bağlantısı için kullanılan bir sistemdir. Veri tabanına bağlanmak, veri eklemek, silmek ve güncellemek gibi işlemler için nesneler sunar.
Ado.net ile MS SQL, Access, Oracle ve MySQL veri tabanlı bağlantısı yapılabilir ve bu veri tabanları bağlantılarında ihitiyaç duyulacak tüm neslere sahiptir.


Ado.net ile çalışmak

   Bir .net projesine Ado.net dahil etmek oldukça basit bir işlemdir. Ado.net isim alanlarını projeye dahil ettiğinizde Ado.net ila çalışmaya başlayabilirsiniz.
Temel olarak “System.Data” kütüphanesini ve örneğin SQL için “System.Data.SqlClient” kütüphanesi isim alanını (namespaces) eklemeniz yeterlidir. System.Data veri ile ilgili işlemlerde bulunması gerekli olan teme kütüphanedir. Daha sonrada veri tabanınızın türüne göre ikinci bir kütüphane (yukarıdaki SQL örneğindeki gibi) eklemelisiniz.

Ado.net Nesneleri

Ado.net mimarisinde kullanılan temel nesneler Connection, Command, DataReader, DataAdapter ve DataSet nesneleridir.
Connection Nesnesi: Projede veri tabanı kullanımı için olmazsa olmaz nesnedir. Connection nesnesi veri tabanı ile uygulama arasında bağlantı kurmak için kullanılır.
Command Nesnesi: Veri tabanı ile uygulama arasındaki veri akışını iki yönlü olarak kontrol etmeye yarar. Execute.NonQuery, ExecuteScalar ve ExecuteReader olmak üzere3 alt nesnesi vardır.
DataReader Nesnesi: Command nesnesi aracılığı ile getirilen verileri okumak için DataReader nesnesi kullanılır.
DataAdapter Nesnesi: Veri tabanından alınan veriler üzerinde değişiklik yapma, veri tabanına tekrar aktarma gibi işlemler DataAdapter nesnesi ile yapılır. Bu işlemleri yapabilmek için 4 adet alt nesne bulundurur, bunlar; Seçmek için SelectCommand, eklemek için InsertCommand, güncellemek için UpdateCommand ve silmek için de DeleteCommand nesneleridir.
DataSet Nesnesi: Ado.net teknolojisinin en yenilikçi ve güçlü tarafını DataSet oluşturur. Çünkü DataSet nesnesi DataAdapter ile alınan verileri bağlantısız olarak depolayabilir ve yönetebilir.











Entity Framework (EF)
Entity Framework (EF)’ün tanımına geçmeden önce ORM’nin kısaca tanımı ile başlamak istiyorum. ORM yani “Object Relational Mapping” geliştirilen uygulama ile veritabanı arasında köprü olan bir araçtır. Veritabanındaki tabloları class’lara, kolonları property’lere, kayıtları ise objelere dönüştürerek uygulamanın direkt olarak veritabanına erişmesine gerek kalmadan tüm veri tabanı işlemlerini gerçekleştirir. Böylece veritabanı işlemlerinin Sql kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar. Bunu basit bir örnekle şöyle anlatabiliriz. Veri tabanına yapılacak olan CRUD (Create Read Update Delete) işlemleri ORM aracı tarafından algılanır ve yapılacak olan işlem Sql kodlarına dönüştürülür. Bu işleme “Code Generating” denir.
Günümüzde kullanılan birçok ORM aracı bulunmaktadır. Örneğin; Java tabanlı olarak Hibernate, Flex’de Athena Framework, Delphi’de ECO gibi. Entity Framework ise Microsoft tarafından geliştirilen .Net tabanlı bir ORM aracıdır. Entity Framework ile kolayca CRUD işlemleri yapılabilir. Peki, neden ORM? Çünkü;

-          Veritabanı işlemleri ile ilgili kod yazımı en aza ineceğinden minimum zamanda maksimum iş çıkartmayı sağlar.
-          OOP düzeninde kod yazmayı sağlar.
-          Veritabanı olarak esnek yapıya sahiptir. Örneğin yazdığınız proje MSSQL ile çalışmakta ve birden Oracle’a geçmeniz istendi. Bunu yapabilmek için birçok ayar gerekirken Entity Framework ile direkt geçiş yapabilirsiniz.
-          Veritabanı bağımlılığı yoktur. Yani EF’yi oluşturmadan önce veritabanı tablo ve kolonlarını oluşturmalısınız gibi bir kural yoktur. Siz EF ile modellemeyi yaparken olmayan tabloları ve kolonları sizin yerinize açacaktır.
-          Maintenance daha kolaydır.
Her ne kadar EF kodlama olarak zaman kazandırsa da performans olarak ADO.Net kadar hızlı değildir.
- See more at: http://kodluyorum.com/index.php/entity-framework-nedir/#sthash.AZUCX6Fs.dpuf Entity Framework (EF)


Entity Framework Microsoft tarafından geliştirilen ve yazılım geliştiricilerin katı sql sorguları yazmalarını ortadan kaldırarak bir ORM (Object Relational Mapping) imkanı sağlayan framework'tür. ORM ise ilişkisel veritabanı yönetim sistemlerine direkt olarak müdahale yerine nesneler aracılığı ile müdahale edilmesini sağlayan bir köprüdür diyebiliriz.

Piyasada bir çok ORM Framework'leri bulunmaktadır. Örnek olarak; DataObjects.Net, NHibernate, OpenAccess, SubSonic etc. Entity  Framework vs..

   Entity framework ile birlikte LINQ (Language Integrated Query) sorgularını kullanarak nesneler üzerinde güçlü bir sorgulama imkanına sahip oluruz. Entity framework'ün bize sunduğu hizmetler başlıca change tracking, identity resolution, ve query translation. 


Not : Tüm bu hizmetleri ilerleyen makalelerde detaylıca inceleyeceğiz ancak siz bu konuları araştırarak ön bilgiye sahip olursanız daha iyi anlayacaksınızdır konuları..
Entity framework'ün aslında temel amacı uygulama geliştiricinin data işlemleri ile çok haşır neşir olmadan uygulama tarafına odaklanmasını sağlamaktır. Çok basit bir örnek olarak, klasik ADO.NET uygulamalarında bir bağlantının açılmasından ve kapatılmasından tamamen biz geliştiriciler sorumludur. Ancak entity framework kullandığınızda bu tür işlemlere siz karışmazsınız. Sorgunuzu hazırlar ver entity framework aracılığı ile bunu database'e iletirsiniz.

Entity Framework Mimarisi




Entity Framework Nedir?


Entity Framework (EF)’ün tanımına geçmeden önce ORM’nin kısaca tanımı ile başlamak istiyorum. ORM yani “Object Relational Mapping” geliştirilen uygulama ile veritabanı arasında köprü olan bir araçtır. Veritabanındaki tabloları class’lara, kolonları property’lere, kayıtları ise objelere dönüştürerek uygulamanın direkt olarak veritabanına erişmesine gerek kalmadan tüm veri tabanı işlemlerini gerçekleştirir. Böylece veritabanı işlemlerinin Sql kodları yazmadan nesneler üzerinden kolayca yapılmasını sağlar. Bunu basit bir örnekle şöyle anlatabiliriz. Veri tabanına yapılacak olan CRUD (Create Read Update Delete) işlemleri ORM aracı tarafından algılanır ve yapılacak olan işlem Sql kodlarına dönüştürülür. Bu işleme “Code Generating” denir.

Günümüzde kullanılan birçok ORM aracı bulunmaktadır. Örneğin; Java tabanlı olarak Hibernate, Flex’de Athena Framework, Delphi’de ECO gibi. Entity Framework ise Microsoft tarafından geliştirilen .Net tabanlı bir ORM aracıdır. Entity Framework ile kolayca CRUD işlemleri yapılabilir. Peki, neden ORM? Çünkü;
-          Veritabanı
-          OOP düzeninde kod yazmayı sağlar.
-          Veritabanı olarak esnek yapıya sahiptir. Örneğin yazdığınız proje MSSQL ile çalışmakta ve birden Oracle’a geçmeniz istendi. Bunu yapabilmek için birçok ayar gerekirken Entity Framework ile direkt geçiş yapabilirsiniz.
-          Veritabanı bağımlılığı yoktur. Yani EF’yi oluşturmadan önce veritabanı tablo ve kolonlarını oluşturmalısınız gibi bir kural yoktur. Siz EF ile modellemeyi yaparken olmayan tabloları ve kolonları sizin yerinize açacaktır.
-          Maintenance daha kolaydır.
Her ne kadar EF kodlama olarak zaman kazandırsa da performans olarak ADO.Net kadar hızlı değildir.
- See more at: http://kodluyorum.com/index.php/entity-framework-nedir/#sthash.AZUCX6Fs.dpuf




EDM (Entity Data Model): EDM 3 bölümden oluşur. Conceptual Model, Mapping, Storage Model.
Conceptual Model: Bu alanda model sınıflarımız ve bu sınıfların ilişkileri yer alacaktır. Bu sınıflar veritabanı tasarımınızdan bağımsız olacaktır.
Storage Model: Bu alanda veritabanı tasarım modelimiz yer alır. Bu model içerisinde veritabanımıza ait tablolar, view'lar, stored procedure'ler ve bunlara ait ilişkiler ve key'ler yer alır.
Mapping: Bu alan ise model sınıflarımız ile tasarım modelimiz arasındaki haritalama işlemlerinin bilgilerinin tutulduğu alandır.
LINQ to Entities: Nesneleri sorgulamada kullanacağımız sorgulama dilidir. Bu sorgular bize model sınıflarını döndürecektir. Bu alanda LINQ'in yeteneklerini de kullanabiliriz.
Entity SQL: Yine LINQ to Entities gibi sorgulama yapabileceğimiz bir sorgulama dilidir. Ancak Linq To Entities'e göre daha zordur.
Object Services: Veritabanından sorgulama sonucunda alınan verilerin geri döndürülme aşamasında gereken convert (dönüştürme) işlemlerinin yapıldığı alandır.
Entity Client Data Provider: Bu alanın sorumluluğu hazırlanan LINQ to Entities yada Entity SQL sorgularını ADO.Net Data Provider'a gönderilmek üzere anlaşılır SQL sorgularına dönüştürmektir.
ADO.Net Data Provider: Bu katman ise standart ADO.NET kullanarak veritabanı ile iletişim kurar.
Bu makalemde temel olarak Entity Framework yapısını anlatmaya çalıştım. Çok detaya inmemin nedeni, bu sistemi kullanmaya başladığınız zaman neyin nasıl işlediğini bilin ki ona göre işlemlerinizi yapın demek içindi. İlk kez bakacaklar için karmaşık gelebilir ancak merak etmeyin. Entity Framework'ü kullanmaya başladığınız zaman çok rahat adapte olabileceğiniz bir yapı olduğunu göreceksiniz. Entity Framework kullanmaya başladığınızda kesinlikle ADO.NET e dönüş yapmak istemeyeceksiniz. Projelerinizin çok daha kısa sürede ve çok daha hatasız şekilde geliştirilebilmesi için büyük bir velinimettir Entity Framework.
Makale serisini hazırlarken entityframeworktutorial.net sitesini detaylıca kullanmayı planlıyorum (bu makalede de epeyce kullandım zaten.). Sizde bu site üzerinden örnekleri inceleyebilir ve fikir sahibi olabilirsiniz.


Object Relational Mapping(ORM)

  ORM, Object Relational Mapping anlamına gelmektedir. O/R Mapping olarakta yazılabilir.  ORM nedir diye bir soru soracak olursak şöyle bir cevap verebiliriz: “İlişkisel veritabanı (RDBMS) ile nesneye yönelik programlanın (OO) arasında bir tür köprü özelliği gören ve ilişkisel veritabanındaki bilgilerimizi yönetmek için, nesne modellerimizi kullandığımız bir tekniktir/metodtur”. Basite indirgemek istersek: “Nesnelerimizi ilişkisel veritabanındaki tablomuza bağlayan ve veri alış-verişini bizim için yapan bir tekniktir/metodtur”. ORM tekniği belli bir programlama diline bağlı değildir ve her OO dilinde yazılabilir/kullanılabilir.

Günümüzde kullanılan popüler programlama dillerinde yazılmış bir çok ORM kütüphaneleri vardır. Bunlara çoğu zaman ORM araçları (ORM Tools) deniyor. Yazımın ilerleyen bölümlerinde Java dünyasında kullanılan popüler ORM araçlarına bir göz atacağız.



ORM ile neler yapılabilir?



 ORM sayesinde SQL sorgularıyla yapılan birçok işlem SQL sorgusu kullanılmadan gerçekleştirilmektedir. Örneğin veritabanından veri çekmek için SELECT sorgusu yerine oluşturmak yerine oluşturulan nesneden ID’si xxx olan eleman gelsin diyerek veritabanından o elemanı alabiliriz. Başka bir şekilde örneklersek, Ad’ı yyy olan elemanları Liste şeklinde getirmek istiyorsak “BU NESNEDEN Ad’ı yyy OLANLARI GETİR” diyerek SELECT sorgusu yazıp, sonra onu List’e atmayla uğraşmadan getirebiliyoruz.


ORM’de Mapping Nedir?

  Mapping, ORM’de veritabanı ile nesnelerimiz arasındaki bağı kuran yapımızdır. Hangi nesnenin (sınıfı

 hangi tabloyla bağlanacağını, bağlanan tablolarda hangi property’nin (özelliğin ya da değişkenin) tablonun

 hangi alanıyla bağlanacağını, tablonun özelliklerini (ID’sinin ne olduğu, ID’sinin autoincrement olup olmadığı) bilgilerin tanımlandığı yapımızdır. Kimi ORM frameworkleri bu işlemi yazılımcının yapmasını istese de

 (Hibernate, Nhibernate) kimi frameworkler bu işlemleri kendisi gerçekleştirmekte, istediği taktirde yazılımcının

 mapping’de düzenleme yapmasına izin vermektedir (Entity Framework).


Aşağıdaki şekilde, Orm’nin yapısı daha net anlaşılmaktadır.

Object1 ve Object 2 isminde 2 sınıfımız  bulunuyor.Bu sınıfları veritabanına bağlayan ise ORM ‘dir.







  


ORM Araçları



1. Java için ORM frameworkleri:



- Hibernate

 - JPA

 - OpenJPA

 - Toplink

 - EclipseLink

 - Apache Cayenne

 - MyBattis



2. .Net için ORM frameworkleri

- Entity Framework
- Nhibernate
- .Net Persistence
- BBADataObjects- DataObjects.NET
- DotNorm

- FastObjects.NET

- Norm

- OJB.NET


3. PHP için ORM frameworkleri:


 - Propel

 - Doctrine

 - PHP-Activerecord

 - PdoMap
 - RedBean


Hibernate


     Hibernate verilerin saklanması, güncellenmesi, silinmesi gibi işlemleri nesne tabanlı modele göre kolaylaştırmak için kullanılan bir java teknolojisidir. Nesne tabanlı alan modelini geleneksel ilişkisel veritabanına çevirmeye yarar.  .Net versiyonu için de NHibernate kullanılır. Kalıcı sınıfları oluşturup bu sınıfları XML kullanılarak eşlenmiş veritabanı tablolarına ve sahalarına kaydetmek için kullanılır. Hibernate gibi ORM araçlarının en önemli faydası, kod yazımını kısaltmak veya kolaylaştırmaktan öte, yazılım bakımını kolaylaştırmasıdır.  Hibernate veritabanına kayıt işlemi için POJO’lardan yararlanır. POJO’lar bildiğimiz java class larıdır. POJO’ları veritabanındaki tablolara saklamak için gereken işlemleri pojo.hbm.xml dosyasında belirtiriz. Burdaki pojo sınıfın ismidir. Örnek  pojomuz person olsun mapping dosyamız da person.hbm.xml olur.  Daha sonra bazı metodlarla çağırırız. Veritabanı ayarlarının tutulduğu dosya da hibernate.cfg.xml’ dir. 




Hibarnate Mimarisi