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
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)
2
Bu bölümde;
ORM nedir?
ORM avantaj ve dezavantajları
EF (Entity Framework)
EF Basit Uygulama
ile ilgili konular anlatılacaktır.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
ORM Nedir? (Devam…)
• Veritabanı modelini uygulama modelindeki
nesnelere uyarlar.
• Veritabanı modelini uygulamadan soyutlayarak
nesneler üzerinden işlem yapmamızı sağlar.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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.Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
ORM Avantajları
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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?)
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
ORM Çatıları
• Java için ORM
çatıları:
– Hibernate
– JPA
– OpenJPA
– Toplink
– EclipseLink
– Apache
Cayenne
– MyBattis
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
• .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.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
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.
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
EF (Entity Framework) devam…
UYGULAMA
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
Yararlanılan Kaynaklar
14
• http://www.w3c.org
• http://www.w3schools.com/jquery
• http://www.oguzkurtcuoglu.com/blog/post/entity-
framework-makale-serisi---entity-framework-nedir
• Ders Notları, Yrd. Doç. Dr. Yuriy Mishchenko
• Jump Start Bootstrap, Syed Fazle Rahman, 2014,
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama
15
İYİ ÇALIŞMALAR…
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi - YZM 3215 İleri Web Programlama