Framework for generating application code from SQL
Framework pro generování aplikačního kódu z SQL
bakalářská práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/210826Identifikátory
SIS: 294136
Kolekce
- Kvalifikační práce [12356]
Autor
Vedoucí práce
Konzultant práce
Koupil, Pavel
Oponent práce
Kratochvíl, Miroslav
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Informatika se specializací Programování a vývoj software
Katedra / ústav / klinika
Katedra softwarového inženýrství
Datum obhajoby
18. 6. 2026
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Velmi dobře
Klíčová slova (česky)
SQL|generování kódu|ORM|C++|SQLite|abstrakce databázeKlíčová slova (anglicky)
SQL|code generation|ORM|C++|SQLite|database abstractionIntegrace relační SQL databáze do jakékoli aplikace nutně přináší řadu problémů. Jedním z nich je problém dvou zdrojů pravdy, ten nevyhnutelně vede k řadě konfliktů. Databázové SQL a kód aplikace reprezentují strukturu dat jinými způsoby, na této struk- tuře se ale musí shodnout jinak aplikace nebude fungovat správně. Změna jednoho zdroje pravdy vyžaduje ekvivalentní změnu druhého, tato závislost zvyšuje další cenu vývoje. Jedním řešením je použítí code-first ORM frameworku, ten ale přináší své vlastní pro- blémy, a často neumožňuje použít již napsané SQL. Abychom tyto problémy vyřešili, s odkazem na už existující řešení, vydali jsme se cestou méně prozkoumaných database- first ORM frameworků. Nadesignovali a napsali jsme vlastní framework v jazyce C++, podporující SQLite databázi. Vytvořená aplikace podporuje generování struktur pro en- capsulaci dat, generování funkcí pro SQL příkazy, a vytváření repozitářů pro skupiny vygenerovaných funkcí. Aplikaci jsme vytvořili s důrazem na rozšiřitelnost, jsme přesvěd- čeni, že poskytuje silnou základnu pro další vylepšení, která ji posunou na úroveň široce použivaných database-first ORM frameworků.
Integration of relational SQL database into any application inevitably leads to the inconvenience of having two sources of truth. This leads to fragile balance as application code can easily be in conflict with the underlying database structure described with SQL. Common solution is to employ code-first ORM framework, choosing application code as the superior source of truth. Code-first frameworks bring their own set of problems, such as big memory demands, possibly inefficient queries, database non-transparency, and possible inability to make use of already written SQL. In an attempt to solve these issues, with regard to already existing solutions, we have designed a database-first ORM framework, capable of generating C++ code from given SQL queries in the SQLite dialect. Highlights of supported features include: strongly typed structures generation, queries into functions encapsulation, and queries into repositories distribution. With extensibility and modifiability as priorities, the created application is overall providing a strong base for widely usable database-first framework.
