Object Relational Mapping (ORM)’in Türkçe tanımı Nesneleri ilişkisel olarak eşleştirme olarak adlandırılabilir.
Developer’ı veritabanı karmaşıklığından kurtarıp; kontrol edebilmek, 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.
Amacı : Objelerimiz ile veritabanı arasındaki bağlantıyı sağlamak, eşleştirmek.
Sınıflar => Tablolar
Nesneler => Sütunlar
İlişkiler => Foreign Keyler
Primitive İfadeler => SQL tipleri ile ilişkilendirilir.
Görselde görüldüğü gibi Customer ve Bank Account isimli classlar tanımlanmış. Normal şartlar altında veritabanı kısmında Müşteri ve Banka Hesabı adında birer tablo oluştururduk. Oluşturduğumuz bu tablolarda gerekli özellikleri tanımlayıp veri tiplerini girmemiz gerekmekteydi. Ancak ORM yapısı ile bunlara gerek kalmayıp, mapping yani eşleştirme işlemi yapılmaktadır. Yazılımımız üzerinden yönetebilir hale geliyoruz.
Avantajları :
- SQL karmaşıklığını azaltır.
- Veritabanı türünden bağımsızlık sağlar.(MySQL, Oracle, SQL Server vs.)
- İyi test edilebilir kod yazılmasını sağlar.
- Polymorphism, Caching, Transaction yönetimi gibi destekler sağlar, çözümler üretir.
- Çoğu ORM aracı Open Source’dur.
- Geliştirme ve bakım maliyeti düşüktür.
Dezavantajları :
- Yanlış kullanımdan kaynaklanılan performans sorunları
- Kontrolün tamamen yazılımcının elinde olmaması.
- ORM araçlarını öğrenmek, kullanabilmek için harcanan zaman/efor.
Dillere göre ORM araçları:
- Java: JPA, Hibernate, EJB, Ebean, Torque, MyBattis
- C#: Entity Framework, Dapper, ECO, XPO
- Php: CakePHP, Codelgniter, RedBean, Doctrine,
- Python: Django, South,Storm
- Ruby: DataMapper, ActiveRecord
- Go: Gorm
Object Relational Mapping Hakkında Kaynaklar:
- http://www.barisdere.com/2010/12/orm-nedir-ve-ne-zaman-kullanmamaliyiz-2/
- http://www.injavawetrust.com/eclipselink-00-hello-orm/
- https://www.oguzhanmangir.com/java-persistance-api-jpa-nedir-01/
- http://www.kadinyazilimci.com/ormobject-relational-mapping-nedir/
- http://blog.burakkutbay.com/orm-object-relational-mapping-nedir-kullanimi.html/
- http://caylakyazilimci.com/object-relational-mapping-orm-nedir
Paylaşımlarınız çok başarılı, bloğunuzu severek takip ediyorum, bende Fırat Universitesi Bilgisayar Mühendisliği Bölümünde okuyorum, şuan 3.sınıfım, Java’dair daha fazla paylaşımlar yapmanızı isterim:D
Merhaba Furkan, biraz geç gördüm yorumunu 🙂 Bu ara yoğunluk olduğundan dolayı bloğa yeterli ilgi gösteremiyorum ama vakit buldukça muhakkak paylaşımlara devam edeceğim. Yorumun için çok teşekkür ederim, aklına takılan herhangi bir soru olduğunda mesaj atman yeterli 🙂