YZM 3215 İleri Web Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1
BÖLÜM - 5 ORM (Object Relational Mapping) ve EF (Entity Framework) Bu bölümde; ORM nedir? ORM avantaj ve dezavantajları EF (Entity Framework) EF Basit Uygulama ile ilgili konular anlatılacaktır. 2
ORM Nedir? Veri tabanınızdaki tabloları sınıflara, kolonları özelliklere, tabloların içindeki kayıtları nesnelere dönüştüren ve tüm bu dönüşün sonucunda oluşan sınıflar ve nesneler üzerinden veri tabanı işlemlerinizi yapmayı sağlayan çatılardır.
ORM Nedir? (Devam ) Veritabanı modelini uygulama modelindeki nesnelere uyarlar. Veritabanı modelini uygulamadan soyutlayarak nesneler üzerinden işlem yapmamızı sağlar.
ORM Avantajları 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 MSSQL ile çalışan bir projeyi ve hızlıca Oracle a geçirmek ORM ile daha az sıkıntılı. Veritabanı bağımlılığı yoktur. Yani ORM yi oluşturmadan önce veritabanı tablo ve kolonlarını oluşturmalısınız gibi bir kural yoktur. Siz ORM ile modellemeyi yaparken olmayan tabloları ve kolonları sizin yerinize açacaktır. Yazılım bakımı daha kolaydır.
ORM Avantajları Direk Erişim Nesne ile erişim
ORM Dezavantajları Veritabanı direk erişime göre daha yavaştır. Veritabanında bilgi alış-verişi sırasında kontrol %100 bizde değildir. Bazen oluşturulan SQL ifadelerinde sorun çıkabilir veya biz daha güzel ve hızlı çalışacak SQL ifadeleri yazabileceğimiz durumlar olabilir???? (Olur mu?)
ORM Çatıları Java için ORM çatıları: Hibernate JPA OpenJPA Toplink EclipseLink Apache Cayenne MyBattis.NET için ORM çatıları: Entity Framework Nhibernate.Net Persistence Drapper.NET DataObjects.NET DotNorm FastObjects.NET Norm OJB.NET PHP için ORM çatıları: Propel Doctrine PHP- Activerecord PdoMap RedBean
EF (Entity Framework) Microsoft tarafından geliştirilmiş bir ORM dir.
EF (Entity Framework) devam 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.
EF (Entity Framework) devam LINQ to Entities: Nesneleri sorgulamada kullanacağımız sorgulama dilidir. Bu sorgular bize model sınıflarını döndürecektir. Entity SQL: LINQ to Entities gibi sorgulama yapabileceğimiz bir sorgulama dilidir. 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 ya da 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.
EF (Entity Framework) devam Entity Framework ile 4 farklı yöntem ile proje geliştirilebilir. Bu yöntemler; 1. Model First (Önce Model): Bu yöntemde Visual Studio üzerinde boş bir model dosyası (.edmx) eklenerek veritabanı bu model üzerinde oluşturulur. 2. Database First (Önce Veritabanı): Bu yöntemde hali hazırda var olan veritabanı projeye model dosyası ile bağlanır ve gerekli sınıflar EF tarafından üretilir. 3. Code First (Önce Kod Yeni Veritabanı): Bu yöntemde sınıflar ve mapping kodları yazılımcı tarafından oluşturulur. Daha sonra veri tabanı bu sınıflardan türetilir. 4. Code First (Önce Kod Var olan Veritabanı): Bu yöntemde de sınıflar ve mapping kodları yazılımcı tarafından oluşturulur. Veritabanı sınıfların ve modellemenin durumuna göre tekrardan şekillenebilir.
EF (Entity Framework) devam UYGULAMA
Yararlanılan Kaynaklar http://www.w3c.org http://www.w3schools.com/jquery http://www.oguzkurtcuoglu.com/blog/post/entityframework-makale-serisi---entity-framework-nedir Ders Notları, Yrd. Doç. Dr. Yuriy Mishchenko Jump Start Bootstrap, Syed Fazle Rahman, 2014, 14
İYİ ÇALIŞMALAR Yrd. Doç. Dr. Deniz KILINÇ drdenizkilinc@gmail.com deniz.kilinc@cbu.edu.tr 15