İçeriğe atla

Orm ve Doctrine

Orm ve Doctrine

 

İlişki Türleri:

One-to-one:

Her iki ilşkidede sadece tek bağlantı kurulabilinir.

 

One-to-many:

Bu ilişki türünden bir tane nesne birden fazla ilişki kurabilir.

Firma – fatura şeklinde olabilir. Bir firmanın birden fazla faturası olabilir ama fatura tek bir firmaya aittir.

İlçe – il

 

Many-to-one:

One-to-many tam tersidir.

İl – ilçe

 

Many-to-many:

Birbirleri ile birden fazla ilişki kuruyorlarsa many-to-many olur.

 

ORM NEDİR (Object Relational Mapping)

Orm ilişkisel veritabanlarının bir yazılım tarafından bir birleri ile ilişkilendirilmesine orm denir.

Crud işlemleri ile orm işlemlerini rahatlıkla yapabilirsiniz.

ORM AVANTAJLARI:

  • Geliştirme Hızı Yüksektir
  • Standart Kod Kullanımı ile spagetti koda çözüm
  • Veritabanı değişimini istediğiniz gibi yapabilirsiniz (Mysql,Postsql vb.)
  • İş yükünüzü hafifletir.
  • Güvenlik Açıklarını engeller
  • Bir çok araç kullanmasını sağlar.
  • Tabloları sınıfa çevirir veritabanı ile pek ugraşmazsınız.
  • Daha az sql sorgusu yazarsınız
  • Veritabanızı harita şeklinde sunar böylece veritabanını kolayca anlarsınız.

 

ORM DEZAVANTAJLARI

  • Performans bakıldığında biraz yavaştır. Küçük projelerde kesinlikle tavsiye edilmez.
  • Öğrenme süreci kimsen zordur
  • Modelleme ve Kulllanım hataları yanlış olabiliyor.

PHP İLE KULLANILAN ORM KÜTÜPHANESİ

  • Doctrine
  • Php activerecord
  • Eloquent ORM

Symfony kullanan kişiler doctrine kullanır. Eskiden php activerecord çok kullanırdı ama gün geçtikçe kullanımı azaldıgı kanısındayım.

Doctrine bir çok framewok ile entegre olduğu için tavsiye ediyorum. Smyfony ile doctrine kullanmayı başladım.  İsterseniz sitesinden comproser ile yüklüyebilirsiniz.

Doctrinede Entity kavramı vardır.

  • Annotation
  • XML
  • YAML
  • PHP Kodu

Entity sayesinde doctrine ve crud işlemleri yapabilirsiniz.

REPOSITORY

Veritabanından nesneleri sorgulamak için kullanılan sınıftır.

Eğer size entityRepository ve query builder yetmediği durumlarda Dql kullanabilirsiniz. Performans kayıplarındada DSQL tavsiye ederim. SQL kodlarını kullanabiliyorsunuz.