C++ Object Persistency Using Object/Relational Databases
C++ Object Persistency Using Object/Relational Databases
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/20758Identifiers
Study Information System: 43039
Collections
- Kvalifikační práce [11264]
Author
Advisor
Referee
Skopal, Tomáš
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software systems
Department
Department of Software Engineering
Date of defense
25. 5. 2009
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Very good
Práce se zabývá návrhem a implementací knihovny, poskytující služby objektově-relačního mapování programům psaných v jazyce C++. Důraz je kladen především na snadnost a transparentnost použití. Pro dosažení těchto cílů knihovna mj. používá nástroj GCCXML, což je rozšíření kompilátoru GCC. GCCXML poskytuje knihovně popis modelu tříd aplikace ve formátu XML, čehož knihovna využívá pro napodobení reflexe. Práce se zabývá také novými vlastnostmi objektově-relačních databázových systémů. Těch je využito pro zavedení nového typu mapování objektů do databází. Implementace knihovny vychází ze tří podobných předchůdců - z knihoven POLiTe, POLiTe 2 a IOPC. Navržená a v práci implementovaná knihovna je sjednocuje v jedinou, flexibilní a rozšiřitelnou platformu. Díky její modulární architektuře je možno knihovnu používat v několika konfiguracích, poskytujících různé podmnožiny implementovaných služeb - databázový přístup, reflexe a objektově-relační mapování.
This thesis deals with design and implementation of a library providing object-relational mapping services for programs written in C++. Emphasis is put on its transparency and ease of its use. To achieve these goals the library uses GCCXML, a XML output extension to GCC. GCCXML helps the library to get description of the class model used in the user application and to simulate the reflection. For the mapping purposes, new object-relational database features are discussed and a new mapping type is proposed. Implementation of the library is based on three related projects - the POLiTe, POLiTe 2 and IOPC libraries. The proposed and implemented library unifies them into one solid, flexible and extensible platform. Thanks to its modular architecture, the resulting library can be used in several configurations providing subsets of implemented services - database access, reflection and object-relational mapping.