İçeriğe geç
parazade

ORM Nedir?

Yayın: · Son güncelleme:

ORM Nedir? Kısaca

ORM (Object-Relational Mapping, nesne-ilişkisel eşleme), veritabanı tablolarını programlama dilindeki sınıflar ve nesnelerle eşleştiren tekniktir. Geliştirici SQL yazmadan, kendi dilinin koduyla veri okuyup yazabilir.

ORM nedir?
İçindekiler
  1. ORM nedir?
  2. Nasıl çalışır?
  3. Avantajları neler?
  4. Nelere dikkat etmeli?

ORM nedir?

ORM, programlama dilinizdeki nesneler ile ilişkisel veritabanındaki tablolar arasında çevirmenlik yapan bir katmandır. Bir "Musteri" sınıfı tanımlarsınız, ORM bunu "musteriler" tablosuna bağlar. Sınıfın her nesnesi tablodaki bir satıra, her özelliği de bir sütuna karşılık gelir.

Popüler örnekler arasında Python için Django ORM ve SQLAlchemy, JavaScript ve TypeScript için Prisma ile Sequelize, Java için Hibernate, PHP için Laravel'in Eloquent'i ve .NET için Entity Framework sayılabilir.

Nasıl çalışır?

Varsayımsal bir Django projesinde İzmir'deki müşterileri getirmek için şu satır yazılır:

Musteri.objects.filter(sehir="İzmir")

ORM bu ifadeyi arka planda SELECT ... FROM musteriler WHERE sehir = 'İzmir' sorgusuna çevirir. Dönen satırları da kullanabileceğiniz nesnelere dönüştürür.

Avantajları neler?

Bu yaklaşım tekrarlayan CRUD kodlarını kısaltır ve kodu okunur kılar. Parametreleri güvenli biçimde yerleştirdiği için SQL enjeksiyonu riskini azaltır. Pek çok ORM, şema değişikliklerini migration dosyalarıyla yönetme imkânı da sunar.

Veritabanı değiştirmek de kolaylaşır. SQLite ile geliştirip canlı ortamda PostgreSQL kullanmak, ORM sayesinde çoğu zaman küçük ayarlarla mümkündür.

Nelere dikkat etmeli?

En bilinen tuzak N+1 sorgu sorunudur. 100 siparişi listeleyip her birinin müşterisini döngüde ayrı ayrı çağırırsanız ORM 1 yerine 101 sorgu gönderebilir. Django'daki select_related gibi ilişkili veriyi önceden yükleyen yöntemler bu sorunu çözer. Karmaşık raporlarda ise ORM'in ürettiği sorguyu inceleyin, gerekiyorsa doğrudan SQL yazın.

Sıkça Sorulan Sorular

ORM ne demek, Türkçesi nedir?

ORM, Object-Relational Mapping ifadesinin kısaltmasıdır ve Türkçede nesne-ilişkisel eşleme olarak çevrilir. Yazılımdaki nesneleri veritabanı tablolarına bağlayan tekniği anlatır.

ORM kullanınca SQL öğrenmeye gerek kalır mı?

Temel işler için SQL yazmadan ilerleyebilirsiniz, ancak SQL bilgisi yine de gereklidir. Yavaş bir sorguyu anlamak, indeks eklemek ya da karmaşık rapor yazmak için ORM'in arkasında ne olduğunu bilmek gerekir.

İlgili terimler

İlgili yazılar