Bu yazıyı 2024 yılında medium platformunda yazmıştım. Blogta içerik zenginleştirmesi için tekrardan burada paylaşıyorum.
Dünü, bugünü ile aynı olmayan teknoloji çağında yeniliklere açık olmak çağımızın yadsınamaz gereksinimidir. İlgi alanımız olsun olmasın, her yeniliğe karşı kulak aşinalığı edinmek zorunda hissettiğimiz bu dönemde her alanda olduğu gibi programlama dillerindeki yeniliklere, programlama üzerindeki tekniklere ve bunların üzerindeki işleyişin devinimine de ayak uydurmalıyız. Bugünkü konumuz da programlama üzerindeki işleyişte bizlere kolaylık sağlayan Object-Relational Mapping (ORM) tekniği olacak.
Bu tekniği aşağıdaki adımlar ile açıklayarak daha anlaşılabilir bir anlatım sağlamak istiyorum:
- Object-Relational Mapping ( ORM ) tekniği nedir ?
- Object-Relational Mapping ( ORM ) tekniği neden varoldu ?
- Object-Relational Mapping ( ORM ) tekniğinin avantajları ve dezavantajları.
- Çeşitli programlama dillerindeki ORM destekli Frameworkler.
- Object-Relational Mapping ( ORM ) tekniği nedir ?
Object-Relational Mapping ( ORM ), ilişkisel veritabanı ile nesne tabanlı programlama arasında nesne yönelimli katman oluşturarak geliştiricilerin temel veritabanı yapısını anlamalarına yardımcı olmak için yapılandırılmış bir harita oluşturur.

Bu teknik sayesinde veritabanındaki tablolar,sütunlar ve kayıtlar birer class, property, ve objelere dönüştürülerek üzerinde modifikasyon yapılması daha kolay olan nesne yapılarına dönüştürür. Bu sayede herhangi bir modifikasyon için uzunca SQL komut satırları yazmak yerine class özellikleri kullanılarak modifikasyon yapılabilir.
ORM tekniği ile elde edilen veri ile SQL sorgusu yazılarak elde edilen veri için gereken kodlar:
/*Normal SQL sorgusu için yazmamız gereken komutlar...*/
var sql= "SELECT id, first_name, last_name, phone, birth_date FROM Customers WHERE id = 7";
var result = context.Customers.FromSqlRaw(sql).ToList();
var name = result[0]["first_name"];
/* ORM tekniği kullanılan bir API yazılması gereken komutlar...*/
var person = repository.GetPerson(10);
var firstName = person.GetFirstName();
Görüleceği üzere ORM tekniği kullanılan Framework’te sorgunun anlaşılabilirliği ve kısalığı SQL sorgusuna göre oldukça iyi.
Peki böylesine güzel bir tekniğin çıkış noktası ne oldu? Hangi sebeplerden dolayı varoldu ?
2. Object-Relational Mapping ( ORM ) tekniği neden varoldu ?
Nesne tabanlı programlama geliştiricilerinin karşılaştığı zorluk, uygulamalarını bir SQL veritabanına bağlamak için yapılandırılmış sorgu dilini (SQL) anlama ve kodlama ihtiyacıydı. SQL bilen geliştiriciler veri erişim kodu yazabilse de bu SQL kodlaması oldukça zaman alıcı olabiliyordu. Bu sebeple bir veritabanını bir uygulamaya bağlamak için gereken SQL bilgisi miktarını en aza indirgeyen Object-Relational Mapping ( ORM ) tekniği kullanılmaya başlandı.
3. Object-Relational Mapping ( ORM ) tekniğinin avantajları ve dezavantajları.
ORM avantajları
- SQL sorgusu yazma derdiniz oldukça azalır.
- Uygulamanızın odağı ORM olacağı için uygulamanızın kendisi veritabanın ne olduğu ile ilgilenmez. Böylece veritabanı bağımlılığı ortadan kalkar, veritabanı değişimi yapılabilir.( MySQL, PostreSQL, Oracle…)
- Nesne tabanlı geliştirmeyi destekler.
- ORM araçları açık kaynak kodlu olduğu için araç içinde herhangi bir açık olma durumunda topluluk tarafından hızlıca giderilebilir.
- Sorgular bizzat ORM araçları tarafından olacağı için SQL Injection gibi durumlar ile sorgular manipüle edilemez.
ORM dezavantajları
- ORM araçlarının genellikle kendine has söz dizimi ve kuralları olduğundan dolayı bu söz dizimleri ve kuralları öğrenmek zaman alabilir.
- ORM tekniğinin kullanımı esasen veritabanı ile uygulama arasında bir katman oluşturmaktan geçtiği için ORM ile sorgu yapmak, direkt SQL sorgusu yapmaya göre zaman kaybı yaşatabilir.
- SQL sorguları ve işlemleri üzerindeki kontrolünüzü ve özelleştirmenizi sınırlayarak yetkinliğinizi azaltabilir.
4. Çeşitli programlama dillerindeki ORM destekli Frameworkler.
- C#: Entity Framework, Dapper
- .NET Framework: NHibernate
- Java: Hibernate, MyBatis, OpenJPA
- Python: Django, Peewee, SQLAlchemy
- JavaScript: TypeORM, Mongoose, Knex.js
Kaynakça:
- https://www.freecodecamp.org/news/what-is-an-orm-the-meaning-of-object-relational-mapping-database-tools/
- https://www.altexsoft.com/blog/object-relational-mapping/
- https://blog.bitsrc.io/what-is-an-orm-and-why-you-should-use-it-b2b6f75f5e2a
- https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping
- http://www.ugurkizmaz.com/blog/orm-object-relational-mapping-nedir
Comments 0
You cannot comment because you are not logged in.
Log in to comment.