İçeriğe geç

ORM Kavramı

ORM yani Object Relational Mapping(İlişkisel Veritabanı Yönetim Sistemi, RDBMS(Relational Database Management System)) kavramı veritabanı ile proje arasına yerleşerek bizim yazmamız gereken sql kodlarını kendisi yazarak bize geriye değerler dönen bir yapıdır.

Bizim projemizde kağıt üzerinde bir yapımız mevcut kullanıcılar tablosu, ürünler tablosu vs. vs. fakat biz bunları yönetirken proje ile eş değer gitsin ve tam uyumlu olsun istiyorsak ORM yardımı ile bunu sağlayabiliriz. ORM araçlarının bir çoğu bizim için tablolar oluşturabilmektedir. Kendi kulladığım ve deneyimlediğim kadarı ile Hibernate, C# Entity Framework ve Laravel Model yapısı(Eloquent ORM) gibi ORM araçları bizim için tablolar oluşturabiliyor. Oluşturuken verdiğimiz ölçütleride kullanarak oluşturuyor tabi aksi durumda default değerler kullanıyorlar farklılık gösterebiliyor yapısına göre.

Projede kullanılacak olan tabloların yani objelerin birer görüntüsü oluşturulduktan sonra bunu ORM aracına verip tabloları sqlde oluşturduktan sonra bizim için yaptıkları diğer bir adımda bizim için arka planda sql sorguları yazmak. Yani bir tablodan bir ürün çekerken SELECT * FROM tablo bla bla.. gibi kullanmak yerine biz direk;

$users = User::all();

Şeklinde üyelerimizi çekebiliriz. Bu komut bizim için arkada bir sql komutu yazar bunu sql gönderir ve sonucunda alınan çıktıyı dönecektir. Görünürde çok güzel, çok hoş gözüksede bazı sıkıntılarıda mevcuttur. Bazen ilişkili tablolar kurarız bunlar için bir listeleme işlemi yaptığımızda doğru yapıyı kurmazsak bir anda önümüze yığınla veri dönebilir. Bunların önüne geçmek içinde kullanılırken lazy ve eager kavramlarına dikkat etmek gerekir.

Kendimce iyi yönleri;

  • Temiz ve güzel kod yazımı
  • Kolaylık sağlaması
  • Veritabanı çeşitliliğinden kurtulmak
  • SQL bilmeden harikalar çıkartabilmek(sadece teoride tabi sql koduna bakmadan o sql direk göndermek her zaman yanlıştır benim görüşüme göre)

Kendimce kötü yönleri;

  • Eğer ilişkiler düzgün değilse doğacak karmaşıklık ve performans sorunu
  • Bazı yapılarda ilişki kurmak zor olabiliyor
  • Yazılan sql kodunu anlamaya çalışmak(çoğu araç size isterseniz test aşamasında yazılan kodu döndürüyor kontrol edilmesi gerektiğini düşünüyorum bazen sql kodunda mantık hataları vs. fark edilebiliyor)
  • Bazılarını anlamak bazen çok zor olabiliyor ve uzun zamanlar alabiliyor(Hibernate için çok zorlanmıştım)

ORM güzel ve kullanımıda anlamlı bir yapı fakat her projede kullanmak mantıklı değil. Mesela çok basit bir site yapacaksanız orada kullanmanız anlamsız olacaktır fakat büyük projelerde kullanmak için güzel ve sağlam bir yapı.

Sonuç olarak; ORM güzeldir fakat kontrolleri güzel sağlandığı kadar güzeldir…

Tarih:ORM

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir