Object Relational Mapping (ORM) Nedir?

Metin Topcu
3 min readMar 24, 2023

--

ORM araçları ilişkisel veritabanları (SQL Database) ve uygulamalar arasında köprü kurar. Data access teknolojisidir. Kod tarafında class’a, veritabanında tablo denk düşer.

Amacımız developer’ı veritabanı karmaşıklığından kurtarmak ve objelerimiz ile veritabanı arasındaki bağlantıyı sağlamaktır. Projelerimizi iyi bir şekilde yönetebilmek adına geliştirilmiş bir programlama tekniğidir. Bir programlama diline özgü değildir. Bir çok nesne tabanlı dil bu tekniği desteklemektedir.

ORM avantajları

  • Database bağımlılığını ortadan kaldırır.
  • SQL, JDBC, TSQL, PLSQL vb.. bilmeye gerek kalmaz, SQL tarafında ki karşılığını bilmeye gerek kalmaz.
  • Nesne yönelimli(OOP) kod yazmayı destekler.
  • ORM araçlarının çoğu açık kaynak (Open Source) kodludur.
  • İyi test edilebilir kod yazılmasını sağlar.
  • Polymorphism, Caching, Transaction yönetimi gibi destekler sağlar, çözümler üretir.
  • Geliştirme ve bakım maliyeti düşüktür.

ORM Dezavantajları

  • Performans sorunlarına neden olabiliyor.
  • SQL’e müdahele edemeyiz, kontrolün tamamen yazılımcının elinde olmaması.
  • ORM araçlarını öğrenmek için zaman harcamak gerekir.

Dillere göre ORM araçları:

  • Java: JPA, Hibernate, EJB, Ebean, Torque, MyBattis
  • C#: Entity Framework, Entity Framework Core, Dapper, ECO, XPO
  • Php: CakePHP, Codelgniter, RedBean, Doctrine,
  • Python: Django, South,Storm
  • Ruby: DataMapper, ActiveRecord
  • Go: Gorm

ORM’nin hayatımıza girişi

Örnek Java

Java ile ilişkisel veritabanlarına erişmek için JDBC(Java Database Connectivity) API kullanılır. JDBC, Uygulama-Veritabanı arasında köprüdür ayrıca JDBC Driver manager sayesinde farklı veritabanlarına bağlanabilirsiniz. SQL komutları ile işlemlerimizi yaparız.

Örneğin;

JDBC ile veritabanına kayıt eklerken kullandığımız yapı;

stmt.executeUpdate( “INSERT INTO il VALUES (1, ‘Ankara’)”);

Projede Oracle ile çalışıyorken SQL’lerimizi yazdık ve seneler sonra projenin MySQL ile çalışması kararı alındığında syntax ları birebir aynı olmadıkları için tüm yazılan SQL cümlelerinin tekrar kontrol edilmesi ve revize edilmesi gerekir.

Yani bütün kontrol yazılımcının elinde …

İşte tam ORM aracı kullanma zamanı … Bir arabanız var diyelim, bu arabanın nasıl çalıştığını kimse detaylıca bilmez. Siz sadece sürmesini bilirsiniz kontağı çalıştırır ve gidersiniz. İşte ORM araçlarıda “siz database ile uğraşmayın o kısmı bana bırakın” diyerek soyutlaştırır. “Plug and Play” mantığıyla çalıştığını düşünün sizin hangi veritabanını kullanıdığınız önemli değil siz nesneleri kullanın o sql cümlelerini oluşturur hemde bağlı olduğunuz db’ye göre.

ORM Modelleme Tekniğinin Yaklaşımları

ORM modelleme yaklaşımları 3' e ayrılır.

  • Database First Yaklaşımı
  • Model First Yaklaşımı
  • Code First Yaklaşımı
  1. Database First Yaklaşımı

Database First yaklaşımda var olan bir veri tabanından modeli .EDMX uzantılı dosya olarak oluşturur.

Bu yaklaşımda veri tabanında değişiklikler yapmak istendiğinde, SQL server da manuel olarak değişiklikler yapıldıktan sonra modele aktarılır.

2. Model First Yaklaşımı

Model First yaklaşımında önce yeni bir model oluşturmaya daha sonra o modelden bir veri tabanı şeması oluşturmaya izin verir.

Model bir .EDMX dosyasında saklanır. Bu yaklaşımda entity’leri, ilişkileri vb. EDMX design da oluşturmalı ve daha sonra modelden veri tabanı oluşturulmalıdır.

Model First Yaklaşımı

Son olarak bu yöntemde kodlamadan daha çok design ile çalışılır.

3. Code First Yaklaşımı

Code First, kod ile veri tabanı ve entity modeli oluşturma yaklaşımıdır. Öncelikle entity classları oluşturulur, classlar arası ilişkiler belirlenir. Daha sonra classlar tablo olarak, classlardaki propertyler ise kolon olarak veri tabanına aktarılır.

Code First yaklaşımında EDMX desing yapılmaz.

Bu yazımda bir çok web sitesinden faydalandım bunlar;

--

--

Metin Topcu
Metin Topcu

No responses yet