ORM(Object Relational Mapping) NEDİR?

Buse Yalçın
2 min readSep 17, 2021

--

Bu yazımda sizlere kısaca ve basitçe ORM’in ne olduğundan bahsedeceğim. Keyifli okumalar 🥳

ORM; ilişkisel veritabanı ve OOP arasında ki veri dönüşümünü gerçekleştirir. Yüzeysel olarak bakacak olursak ORM, yazılım ile veritabanı arasında bir köprü görevi görür.

Ado.net kullanılan projelerde veritabanı ile ilgili yapılan işlemlerde yazılımcı doğrudan sql sorguları yazmak durumundadır. ORM ile kod içerisine yazılan sql satırları ortadan kalkmıştır. Veritabanımız içerisinde yer alan tablolar bir sınıf (class), kolonda ki alanlarımızın her biri değişken (property) olarak tanımlanmaktadır. Yani ORM veritabanımızda ki tablolarımızı class’lara çevirir. Bu class yapısı ile bizim programlama işleminde ki veritabanı bölümlerinde daha az zaman harcamamıza olanak sağlamaktadır. ORM ile işlemlerin kısalması ve daha düzenli bir şekilde devam etmesi sağlanmaktadır.

ORM ile beraber class’lar oluşuyor demiştik bu class’larımız ise;

  • Bağlanma
  • Ekleme
  • Düzeltme
  • Silme
  • Kapatma
  • Kontrol

Şeklinde olmaktadır. Her şey elinizin altında bu sistem yazmayı kolaylaştırdığı gibi performansı maalesef olumsuz yönde etkilemektedir.

Neden ORM kullanmalıyım? 💁‍♀️💁‍♂️

ORM’in sağladığı kolaylık ne diyecek olursak eğer bir örnek üzerinden gidebiliriz.

Id’sini bildiğimiz bir kullanıcının ismini almak isteyelim. Bunun için ado.net kullanılan bir projede aşağıdaki gibi bir kod sırası izlenmesi gerekmekteydi.

string sql = "SELECT FirstName FROM Accounts WHERE Id = 7";

DbCommand cmd = new DbCommand(connection, sql);

Result result = cmd.Execute();

string firstName = result[0]["FirstName"];

ORM tabanlı bir yapıda ise aynı işlemi aşağıdaki gibi yapabiliriz.

Account kullanici = repository.GetAccount(7);

string isim= kullanici.FirstName;

  • Veritabanında ki tabloları, sınıflara çevirir. ORM sayesinde kod yazarken veritabanında daha az zaman harcarız.
  • Geliştirme ve bakım maaliyeti düşüktür. Çünkü nesne-veritabanı, veritabanı-nesne dönüşümünü otomatik gerçekleştirir.
  • Veritabanını harita olarak önümüze sunar böylece karmaşık veritabanlarını anlamak kolaylaşır.
  • ORM uygulama katmanı altında bulunur.
  • ORM tüm nesne yönelimli programlama dilleri için mevcuttur.
  • Nesne tabanlı programlama standartlarına uygun olarak kod yazma imkanı verir.
  • Minimum SQL bilgisi ile veritabanı işlemleri yapmak imkanı tanır.
  • Veritabanı platformu bağımlılığı yoktur. Oracle kullanıyorken MSSQL geçişini sorunsuzca gerçekleştirebiliriz.
  • Ado.net’e karşı daha güvenlidir. Sql Injection gibi bilinen saldırılara karşı güvenlik önlemleri vardır.
  • Kod yazma süresini kısaltır.
  • Kod okunabilirliğini arttırır.

Programlama dillerinin de kendine ait farklı ORM framework’leri bulunmaktadır.

Dillere göre sık kullanılan ORM örnekleri;

  • C#: Entity Framework, Dapper, ECO, XPO, Norm
  • Java: Hibernate, Ebean, Torque, JPA, MyBattis, EclipseLink
  • Php: CakePHP, Codelgniter, RedBean, Doctrine, Propel, PdoMap
  • Python: Django, South, Storm

Bu yazımda anlatacaklarım bu kadar. Bilgi paylaştıkça çoğalır 👏

--

--

Buse Yalçın

Computer Engineer ⚪️ Backend Developer ⚪️ Research freak 💃🏼 GitHub: https://github.com/Buse5 Website: buse5.github.io