C++ Programlama Dili için Yerel Nesne-İlişkisel Haritalama Yaklaşımı

En popüler programlama dillerinin çoğu, nesne yönelimli olarak bilinen dillerdir. Bu diller ile geliştirilmiş uygulamaların çoğu da, ilişkisel veri tabanları kullanmaktadır. Yapısal sorgulama dili olan SQL ise ilişkisel bir Veritabanı ile etkileşim kurmak için kullanılan ve verileri düzenlemek, yönetmek ve almak için kullanılan, standart haline gelmiş bir araçtır. Bu iki teknolojinin arasındaki temel farklılıklar nedeniyle sorunsuz bir şekilde birlikte çalışmamaktadır. Aralarındaki uyumsuzluklar, nesne/ilişkisel empedans uyumsuzluğu sorunları olarak ortaya çıkmaktadır. Bu nedenle, verileri o iki ortam arasında dönüştürebilmek için bir haritalama katmanına sahip olmak oldukça gereklidir. Bu soyutlama katmanı, uygulama nesnelerini otomatik olarak veritabanı kayıtlarına eşler; bu şekilde veritabanı ile etkileşim için gerekli kod miktarında azalma olmaktadır. Ayrıca verilerin tutulduğu veri tabanını yazılımcıdan soyutlamaya yardımcı olur. Böylelikle, kodun testini ve bakımını daha kolay kılar. Bu tür araçlara nesne/ilişkisel haritalama aracı denilir (Object/Relational Mapping - ORM). Çoğu programlama dili için çeşitli ORM araçları geliştirilmiştir. Ancak C++ için etkili bir ORM aracı bulunmamaktadır. Bu çalışmada C++'ın şablon (template) programlama ile esnek adresleme özellikleri kullanılarak veri tabanı işlemleri için kullanılan SQL komutları seri hale getirilmektedir. Geliştirilen C++ ORM katmanı yerel olarak uygulamak için yeni bir yaklaşım tanıtılmaktadır.
Anahtar Kelimeler:

C++, SQL, ORM, Veritabanı

___

  • S. Karacabey, “Veritabanı modelleri ve hiyerarşik veritabanından ilişkisel veritabanına dönüşüm”, Yüksek Lisans Tezi, Yıldız Teknik Üniversitesi (1997).
  • C. Ireland, D. Bowers, M. Newton, K. Waugh, “Understanding object-relational mapping: A framework based approach”, International Journal on Advances in Software, vol 2 no 2&3, (2009).
  • M. K. Awang, “Transforming object oriented data model to relational data model”, International Journal of New Computer Architectures and their Applications, 3(3):403-410 (2012).
  • C. Xia, G. Yu, M. Tang,.”Efficient Implement of ORM (Object/Relational Mapping) Use in J2EE Framework: Hibernate”, 1 - 3. 10.1109/CISE.2009.5365905 (2010).
  • X. Zhang, “A framework for object-relational mapping with an example in C++”, Masters thesis, Concordia University (2004).
  • Code Synthesis, “ODB - C++ Object-Relational Mapping (ORM)”, https://www.codesynthesis.com/products/odb/ (Accessed 2022-11-06).
  • L. Marty, “QxOrm : C++ Qt ORM Object Relational Mapping database library - QxEntityEditor : C++ Qt entities graphic editor (data model designer and source code generator)”, http://www.qxorm.com/qxorm_en/home.html/ (Accessed 2022-11-06).
  • L. Stryzhevskyi, “Oat++”, https://oatpp.io/ (Accessed 2022-11-06).
  • Emweb, “Wt, C++ Web Toolkit — Emweb”, https://www.webtoolkit.eu/wt/ (Accessed 2022-11-06).
  • TreeFrog Framework Project, “TreeFrog Framework | High-speed C++ MVC Framework for Web Application”, https://www.treefrogframework.org/ (Accessed 2022-11-06).
  • M. Garrigues, “Lithium C++ High Performance HTTP server”, https://matt-42.github.io/lithium/ (Accessed 2022-11-06).
  • P. Korzhyk, “GitHub - paulftw/hiberlite: C++ ORM for SQLite”, https://github.com/paulftw/hiberlite/ (Accessed 2022-11-06).
  • BrainlessLabs, “GitHub - BrainlessLabs/bun: Bun is a simple to use C++ Object Database, Object Relational Mapper (ORM) and key-value library”, https://github.com/BrainlessLabs/bun/ (Accessed 2022-11-06).