SlideShare a Scribd company logo
1 of 38
Download to read offline
İlişkisel Veritabanları, ORM

ve Doctrine
İlişkisel Veritabanı Nedir?
Verilerin satır ve sütunlardan oluşan tablolarda standart bir yapıda
saklandığı, yüksek veri tutarlılığına sahip veritabanlarıdır.
!

İlişkisel veritabanı, veritabanlarının ilişkisi değil veritabanı
içerisindeki nesnelerin ilişkili olmasıdır.
ID
1

ad
Muhittin

soyad
Özer

eklenme_tarihi

2014-02-22 09:30:00

2

Ali Emre

Çakmakoğlu

2014-02-22 09:35:40

3

Alpcan

Aydın

2014-02-22 12:15:23

4
5

Aybars
Rasim Canser

Cengaver
Yanbakan

2014-02-22 13:55:09
2014-02-22 16:10:00
İlişkisel Veritabanı Örnekleri
Diğer Veritabanı Yapıları
•

Hiyerarşik Veritabanları: Ağaç-Dal mimarisinde
geliştirilmiş veritabanlarıdır.

•

Çok Boyutlu Veritabanları: Verileri kategorize eden
boyutları ve ölçümleri taşıyan veritabanlarıdır.

•

Yapılanmış Bellek (Anahtar Değer Depoları): Sabit bir
veri düzeni olmayan, anahtar ve değer taşıyan
veritabanlarıdır.
İlişkisel Veritabanı Kavramları
•

Nesne (Entity): Veritabanında tutulan her bir veri
modelidir.

•

Özellik (Attribute): Veritabanı nesnelerine ait verilerdir.

•

Anahtar (Key): Veritabanı nesnelerinin ayırıcı özellikleridir.
•

Birincil Anahtar (Primary Key): Her bir nesne için
benzersiz olan tanımlayıcı anahtardır.
İlişkisel Veritabanı Kavramları
•

İlişki (Relation): Veritabanı nesnelerinin birbirleri ile olan
ilişkilerinin tanımlanmasıdır.


•

Yabancı Anahtar (Foreign Key): Veritabanı nesnelerinin
birbirleri ile olan ilişkilerinde bu ilişkinin kurulmasını
sağlayan ve ilişkili olunan nesnede ilişki kurulan nesnenin
birincil anahtarının değerini taşıyan özelliktir.
İlişki Türleri
One-to-One İlişki
•

Her iki tabloda da bir nesneye karşılık yalnızca bir
nesne ile ilişki kurulabilir.

•

En güzel örnek: Evlilik :)

Not: Bu örnekte Medeni Kanun baz alınmıştır :)
One-to-Many İlişki
•

Bu ilişki türünde ise elimizdeki nesne ile ilişkili olan
nesneden birden fazla olabilmektedir.

•

Örnek: Üye-Sipariş
Many-to-One İlişki
•

Bu ilişki türü ise One-to-Many ilişkinin tam tersidir. Yani
ilişkili olan nesne gibi bir çok nesne karşı tarafta aynı
nesne ile ilişkili olabilir.

•

Örnek: Aynı örnek'te bu sefer Sipariş - Üye ilişkisini ele
alabiliriz.
Many-to-One ve One-to-Many İlişki Örnekleri
•

Üniversite - Fakülte

•

Fakülte - Bölüm

•

Marka - Model

•

Kategori - Kategori (Alt Kategori Yapısı)

•

İl - İlçe
Many-to-Many İlişki
•

Eğer nesneler birbirleri ile karşılıklı olarak birden fazla
nesne ile ilişkili olabiliyorsa bu ilişki türü Many-to-Many
ilişki olmaktadır.

•

Örnek: Haber - Kategori
Many-to-Many İlişki Örnekleri
•

Öğrenci - Ders

•

Ürün - Mağaza

•

Oyuncu - Film

•

Spor Kulübü - Branş

•

Üye - Üye (Takip Ettikleri, Takip Edenler)
ORM
Object Relational Mapping
ORM Nedir?
•

ORM kavramı ilişkisel veritabanlarında bulunan nesnelerin,
özelliklerinin ve ilişkilerinin yazılım tarafında tanımlanarak
bu kavramların yazılım tarafında da karşılıklarının
oluşturulması (veritabanının haritalanması) işlemini ifade
eder.

•

CRUD işlemleri için veritabanı sorgusu yazmanıza gerek
kalmaz. Bu işlemleri sizin yerinize ORM gerçekleştirir.
ORM'nin Avantajları
•

OOP Kullanmaya Zorlar

•

Geliştirme Hızı

•

Standart Kodlar

•

Veritabanından Bağımsız Bir Yazılım

•

Sizin İş Yükünüzü Hafifletir
ORM'nin Avantajları
•

Sorgu Yazmaktan Kurtarır (Güvenlik açığı vermenizi
engeller)

•

Test Edilebilir Kod

•

Ekstra Araçlar Sağlar (Dil Desteği, Tree Yapısı, Slug Yapısı,
Soft-Delete vb.)

•

Event (Listener) Desteği
ORM'nin Dezavantajları
•

Performans

•

Efektif Olmayan SQL sorguları

•

Öğrenme Süreci

•

Modelleme Hataları

•

Kullanım Hataları
PHP İle Yazılan ORM Kütüphaneleri
Sensio Labs tarafından geliştirilen ORM, DBAL ve ODM gibi
veritabanı çözümleri sunan PHP kütüphanesidir.
Neden Doctrine Kullanmalıyım?
•

2006’dan beri geliştirilen stabil bir ORM kütüphanesidir.

•

Esnek ve güçlü nesne haritalama ve sorgu özelliklerine
sahiptir.

•

En basit seviyeden en karmaşık sistemlere kadar her
seviyede çözümler sunabilmektedir.

•

Birçok framework ile olan entegrasyon kolaylığı.
Neden Doctrine Kullanmalıyım?
•

Büyük bir kitle tarafından kullanılması ve geliştiriliyor
olmasından dolayı geniş destek ağına sahip olması

ORM Kütüphanesi
Doctrine / Doctrine2
Propel
Eloquent
DataMapper
RedBean
php.activerecord

Soru Sayısı
4569 / 6045
829
937
882
140
120
Doctrine Kurulumu
•

Arşiv (zip, tar.gz vs) dosyası olarak indirmek

•

PEAR Paketi olarak kurmak:
•
•

•

pear channel-discover pear.doctrine-project.org
pear install doctrine/DoctrineORM-2.3.5

Composer paket yöneticisi ile kurmak:
•

doctrine/orm
Entity Kavramı
•

Entity’ler veritabanında tutulacak her bir nesnenin
Doctrine tarafında karşılığıdır. 4 farklı şekilde entity yapısı
tanımlanabilir:
•

Annotation

•

XML

•

YAML

•

PHP Kodu
Entity Manager ve CRUD İşlemleri
•

EntityManager sınıfı Doctrine’in komuta merkezidir.
Repository Kavramı
•

Repository sınıfları veritabanından nesneleri sorgulamak
için kullanılan sınıflardır.

•

Repository ifadesinin Türkçe karşılığı depodur.
Repository Genişletme
Doctrine'i Projemize Dahil Etmek
Uygulamalı Anlatım
Query Builder Kullanımı
•

Bazen EntityRepository metodları bize istediğimiz verileri
sunamayabilir.

•

Query Builder, bizi böyle durumlarda SQL yada DQL
sorguları yazmaktan kurtaran bir Doctrine sınıfıdır.
DQL Kullanımı
•

Query Builder kullanımının yetersiz kaldığı yada
performans kaybına neden olduğu durumlar için Doctrine
bize DQL söz dizimi ile sorgu imkanı sağlıyor.

•

SQL söz dizimi ile birebir aynı olan ama tablo yerine
Doctrine nesneleri ve sütunlar yerine bu nesnelerin
özelliklerinin kullanıldığı bir yapısı vardır.
Doğal SQL Sorguları Yazmak
•

SQL'in gücünü kullanmak istediğinizde Doctrine doğal
SQL sorguları da yazmanıza olanak sağlıyor.

•

View, Stored Procedure vb SQL özelliklerini kullanmak
istediğiniz zaman bu seçenek en çok ihtiyacınız olan
yöntem olacaktır.
Doctrine Event Sistemi (Lifecycle Events)
•

Doctrine kendi event sistemine LifeCycle Events ismini
veriyor.

•

Veritabanında yapılan işlemlerle alakalı tüm sürece bu
event'ler sayesinde dahil olabilirsiniz.

•

2 Farklı yöntem vardır:
•

Entity Dosyası içerisinde tanımlanan metodlar

•

Listener Class'ı oluşturularak
Doctrine'de Ön Tanımlı Event'ler
•

preRemove – Silme işleminden önce

•

postRemove – Silme işleminden sonra

•

prePersist – Yeni kayıt eklemeden önce

•

postPersist – Yeni kayıt ekledikten sonra

•

preUpdate – Herhangi bir kayıt güncellenmeden önce

•

postUpdate – Herhangi bir kayıt güncellendikten sonra
Doctrine'de Ön Tanımlı Event'ler
•

postLoad – Veri tabanından kayıtlar çekildikten sonra

•

loadClassMetadata – Entity tanımalamaları (metadata’lar)
okunduktan sonra

•

preFlush – Biriktirilen işlemler veritabanına uygulanmadan önce

•

onFlush – Biriktirilen işlemler hesaplanıp sorgu çalıştırılmaya hazır
olduğunda

•

postFlush – Biriktirilen işlemler veritabanına uygulandıktan sonra

•

onClear – Veritabanına uygulanmak üzere biriktirilen işlemler
temizlendiğinde
Sonuç
Soru & Cevap
Teşekkürler

twitter.com/muhittin

facebook.com/muhittinozer

github.com/muhittin

muhittin@muhittinozer.com

More Related Content

Similar to İlişkisel Veritabanları, ORM ve Doctrine

Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMMimar Aslan
 
Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Mimar Aslan
 
İleri Seviye T-SQL Programlama - Chapter 01
İleri Seviye T-SQL Programlama - Chapter 01İleri Seviye T-SQL Programlama - Chapter 01
İleri Seviye T-SQL Programlama - Chapter 01Cihan Özhan
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Anar Godjaev
 
İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08Cihan Özhan
 
Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Sevdanur Genc
 
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)SECUBE Arge Bilişim Mühendislik
 
Oracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOrhan ERIPEK
 
İlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQLİlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQLMurat Azimli
 
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİ
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİİŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİ
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİAbdullah Cihan
 
Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Önder Değer
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?Ertugrul Akbas
 
Arama Sistemleri
Arama SistemleriArama Sistemleri
Arama SistemleriMurat Ilgaz
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL OverviewCihan Özhan
 
Moodle - Uzaktan Eğitim
Moodle - Uzaktan EğitimMoodle - Uzaktan Eğitim
Moodle - Uzaktan EğitimOğuzhan Ozkan
 

Similar to İlişkisel Veritabanları, ORM ve Doctrine (20)

Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
 
Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)
 
İleri Seviye T-SQL Programlama - Chapter 01
İleri Seviye T-SQL Programlama - Chapter 01İleri Seviye T-SQL Programlama - Chapter 01
İleri Seviye T-SQL Programlama - Chapter 01
 
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"Oracle Mimarisi  "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
Oracle Mimarisi "Orneklerle Oracle 11g R2 ve Genel kavramlar isimli KItabdan"
 
İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08İleri Seviye T-SQL Programlama - Chapter 08
İleri Seviye T-SQL Programlama - Chapter 08
 
Linkle mimari
Linkle mimariLinkle mimari
Linkle mimari
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
 
Veriket v4.2- Veri Sınıflandırma, Etiketleme ve Keşif Yerli Yazılımı
Veriket v4.2- Veri Sınıflandırma, Etiketleme ve Keşif Yerli YazılımıVeriket v4.2- Veri Sınıflandırma, Etiketleme ve Keşif Yerli Yazılımı
Veriket v4.2- Veri Sınıflandırma, Etiketleme ve Keşif Yerli Yazılımı
 
Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012Veri tabaniprogramlama 12.10.2012
Veri tabaniprogramlama 12.10.2012
 
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)
Dokuman Yonetimi Sistemi CubeBox-SAYS (Sayisal Arsiv Yonetimi)
 
Oracle Database and Technologies Seminar
Oracle Database and Technologies SeminarOracle Database and Technologies Seminar
Oracle Database and Technologies Seminar
 
İlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQLİlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQL
 
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİ
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİİŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİ
İŞ ZEKASININ TEMELLERİ: VERİTABANLARI VE ENFORMASYON YÖNETİMİ
 
Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9Azure Cloud Engineer - Bölüm 9
Azure Cloud Engineer - Bölüm 9
 
Delphi 7
Delphi 7Delphi 7
Delphi 7
 
Loglari nerede saklayalım?
Loglari nerede saklayalım?Loglari nerede saklayalım?
Loglari nerede saklayalım?
 
Arama Sistemleri
Arama SistemleriArama Sistemleri
Arama Sistemleri
 
MongoDB - NoSQL Overview
MongoDB - NoSQL OverviewMongoDB - NoSQL Overview
MongoDB - NoSQL Overview
 
Moodle - Uzaktan Eğitim
Moodle - Uzaktan EğitimMoodle - Uzaktan Eğitim
Moodle - Uzaktan Eğitim
 

İlişkisel Veritabanları, ORM ve Doctrine

  • 2.
  • 3. İlişkisel Veritabanı Nedir? Verilerin satır ve sütunlardan oluşan tablolarda standart bir yapıda saklandığı, yüksek veri tutarlılığına sahip veritabanlarıdır. ! İlişkisel veritabanı, veritabanlarının ilişkisi değil veritabanı içerisindeki nesnelerin ilişkili olmasıdır. ID 1 ad Muhittin soyad Özer eklenme_tarihi 2014-02-22 09:30:00 2 Ali Emre Çakmakoğlu 2014-02-22 09:35:40 3 Alpcan Aydın 2014-02-22 12:15:23 4 5 Aybars Rasim Canser Cengaver Yanbakan 2014-02-22 13:55:09 2014-02-22 16:10:00
  • 5. Diğer Veritabanı Yapıları • Hiyerarşik Veritabanları: Ağaç-Dal mimarisinde geliştirilmiş veritabanlarıdır. • Çok Boyutlu Veritabanları: Verileri kategorize eden boyutları ve ölçümleri taşıyan veritabanlarıdır. • Yapılanmış Bellek (Anahtar Değer Depoları): Sabit bir veri düzeni olmayan, anahtar ve değer taşıyan veritabanlarıdır.
  • 6. İlişkisel Veritabanı Kavramları • Nesne (Entity): Veritabanında tutulan her bir veri modelidir. • Özellik (Attribute): Veritabanı nesnelerine ait verilerdir. • Anahtar (Key): Veritabanı nesnelerinin ayırıcı özellikleridir. • Birincil Anahtar (Primary Key): Her bir nesne için benzersiz olan tanımlayıcı anahtardır.
  • 7. İlişkisel Veritabanı Kavramları • İlişki (Relation): Veritabanı nesnelerinin birbirleri ile olan ilişkilerinin tanımlanmasıdır.
 • Yabancı Anahtar (Foreign Key): Veritabanı nesnelerinin birbirleri ile olan ilişkilerinde bu ilişkinin kurulmasını sağlayan ve ilişkili olunan nesnede ilişki kurulan nesnenin birincil anahtarının değerini taşıyan özelliktir.
  • 9. One-to-One İlişki • Her iki tabloda da bir nesneye karşılık yalnızca bir nesne ile ilişki kurulabilir. • En güzel örnek: Evlilik :) Not: Bu örnekte Medeni Kanun baz alınmıştır :)
  • 10. One-to-Many İlişki • Bu ilişki türünde ise elimizdeki nesne ile ilişkili olan nesneden birden fazla olabilmektedir. • Örnek: Üye-Sipariş
  • 11. Many-to-One İlişki • Bu ilişki türü ise One-to-Many ilişkinin tam tersidir. Yani ilişkili olan nesne gibi bir çok nesne karşı tarafta aynı nesne ile ilişkili olabilir. • Örnek: Aynı örnek'te bu sefer Sipariş - Üye ilişkisini ele alabiliriz.
  • 12. Many-to-One ve One-to-Many İlişki Örnekleri • Üniversite - Fakülte • Fakülte - Bölüm • Marka - Model • Kategori - Kategori (Alt Kategori Yapısı) • İl - İlçe
  • 13. Many-to-Many İlişki • Eğer nesneler birbirleri ile karşılıklı olarak birden fazla nesne ile ilişkili olabiliyorsa bu ilişki türü Many-to-Many ilişki olmaktadır. • Örnek: Haber - Kategori
  • 14. Many-to-Many İlişki Örnekleri • Öğrenci - Ders • Ürün - Mağaza • Oyuncu - Film • Spor Kulübü - Branş • Üye - Üye (Takip Ettikleri, Takip Edenler)
  • 16. ORM Nedir? • ORM kavramı ilişkisel veritabanlarında bulunan nesnelerin, özelliklerinin ve ilişkilerinin yazılım tarafında tanımlanarak bu kavramların yazılım tarafında da karşılıklarının oluşturulması (veritabanının haritalanması) işlemini ifade eder. • CRUD işlemleri için veritabanı sorgusu yazmanıza gerek kalmaz. Bu işlemleri sizin yerinize ORM gerçekleştirir.
  • 17. ORM'nin Avantajları • OOP Kullanmaya Zorlar • Geliştirme Hızı • Standart Kodlar • Veritabanından Bağımsız Bir Yazılım • Sizin İş Yükünüzü Hafifletir
  • 18. ORM'nin Avantajları • Sorgu Yazmaktan Kurtarır (Güvenlik açığı vermenizi engeller) • Test Edilebilir Kod • Ekstra Araçlar Sağlar (Dil Desteği, Tree Yapısı, Slug Yapısı, Soft-Delete vb.) • Event (Listener) Desteği
  • 19. ORM'nin Dezavantajları • Performans • Efektif Olmayan SQL sorguları • Öğrenme Süreci • Modelleme Hataları • Kullanım Hataları
  • 20. PHP İle Yazılan ORM Kütüphaneleri
  • 21. Sensio Labs tarafından geliştirilen ORM, DBAL ve ODM gibi veritabanı çözümleri sunan PHP kütüphanesidir.
  • 22. Neden Doctrine Kullanmalıyım? • 2006’dan beri geliştirilen stabil bir ORM kütüphanesidir. • Esnek ve güçlü nesne haritalama ve sorgu özelliklerine sahiptir. • En basit seviyeden en karmaşık sistemlere kadar her seviyede çözümler sunabilmektedir. • Birçok framework ile olan entegrasyon kolaylığı.
  • 23. Neden Doctrine Kullanmalıyım? • Büyük bir kitle tarafından kullanılması ve geliştiriliyor olmasından dolayı geniş destek ağına sahip olması ORM Kütüphanesi Doctrine / Doctrine2 Propel Eloquent DataMapper RedBean php.activerecord Soru Sayısı 4569 / 6045 829 937 882 140 120
  • 24. Doctrine Kurulumu • Arşiv (zip, tar.gz vs) dosyası olarak indirmek • PEAR Paketi olarak kurmak: • • • pear channel-discover pear.doctrine-project.org pear install doctrine/DoctrineORM-2.3.5 Composer paket yöneticisi ile kurmak: • doctrine/orm
  • 25. Entity Kavramı • Entity’ler veritabanında tutulacak her bir nesnenin Doctrine tarafında karşılığıdır. 4 farklı şekilde entity yapısı tanımlanabilir: • Annotation • XML • YAML • PHP Kodu
  • 26. Entity Manager ve CRUD İşlemleri • EntityManager sınıfı Doctrine’in komuta merkezidir.
  • 27. Repository Kavramı • Repository sınıfları veritabanından nesneleri sorgulamak için kullanılan sınıflardır. • Repository ifadesinin Türkçe karşılığı depodur.
  • 29. Doctrine'i Projemize Dahil Etmek Uygulamalı Anlatım
  • 30. Query Builder Kullanımı • Bazen EntityRepository metodları bize istediğimiz verileri sunamayabilir. • Query Builder, bizi böyle durumlarda SQL yada DQL sorguları yazmaktan kurtaran bir Doctrine sınıfıdır.
  • 31. DQL Kullanımı • Query Builder kullanımının yetersiz kaldığı yada performans kaybına neden olduğu durumlar için Doctrine bize DQL söz dizimi ile sorgu imkanı sağlıyor. • SQL söz dizimi ile birebir aynı olan ama tablo yerine Doctrine nesneleri ve sütunlar yerine bu nesnelerin özelliklerinin kullanıldığı bir yapısı vardır.
  • 32. Doğal SQL Sorguları Yazmak • SQL'in gücünü kullanmak istediğinizde Doctrine doğal SQL sorguları da yazmanıza olanak sağlıyor. • View, Stored Procedure vb SQL özelliklerini kullanmak istediğiniz zaman bu seçenek en çok ihtiyacınız olan yöntem olacaktır.
  • 33. Doctrine Event Sistemi (Lifecycle Events) • Doctrine kendi event sistemine LifeCycle Events ismini veriyor. • Veritabanında yapılan işlemlerle alakalı tüm sürece bu event'ler sayesinde dahil olabilirsiniz. • 2 Farklı yöntem vardır: • Entity Dosyası içerisinde tanımlanan metodlar • Listener Class'ı oluşturularak
  • 34. Doctrine'de Ön Tanımlı Event'ler • preRemove – Silme işleminden önce • postRemove – Silme işleminden sonra • prePersist – Yeni kayıt eklemeden önce • postPersist – Yeni kayıt ekledikten sonra • preUpdate – Herhangi bir kayıt güncellenmeden önce • postUpdate – Herhangi bir kayıt güncellendikten sonra
  • 35. Doctrine'de Ön Tanımlı Event'ler • postLoad – Veri tabanından kayıtlar çekildikten sonra • loadClassMetadata – Entity tanımalamaları (metadata’lar) okunduktan sonra • preFlush – Biriktirilen işlemler veritabanına uygulanmadan önce • onFlush – Biriktirilen işlemler hesaplanıp sorgu çalıştırılmaya hazır olduğunda • postFlush – Biriktirilen işlemler veritabanına uygulandıktan sonra • onClear – Veritabanına uygulanmak üzere biriktirilen işlemler temizlendiğinde