Article View: pl.comp.lang.c
Article #309879Serializacja obiektów w bazie danych - jakie podejście jest zalecane?
From: Szyk Cech
Date: Sat, 27 Jul 2019 15:11
Date: Sat, 27 Jul 2019 15:11
53 lines
3315 bytes
3315 bytes
Witam Chcę rozpocząć nowy projekt od zera. Projekt będzie dotyczył prostego programu edukacyjnego do nauki angielskiego (takie lepsze SuperMemo) opartego o bazę danych. Program ma być dostosowany do użytku na sprytnych telefonach komórkowych z systemem Android (oraz na tabletach i PC z Windows lub Linux). Chcę do tego projektu zrobić bazę danych. Jednak nie głupią. Oczekiwane cechy modułu bazy danych: * zamyka w sobie całą specyfikę biblioteki pośredniczącej, motoru i zapytań Sql-a. * struktura bazy danych generuje się automatycznie z klas C++. Klasy zachowalne w bazie są wzbogacane o makra: PRIMARY_KEY, FOREIGN_KEY(klasa.zmienna1, klasa.zmiennaN), INDEX, NO_STORE. Makra te nic nie robią z poziomu C++, mają znaczenie tylko dla parsera klas zachowalnych. * przed zbudowaniem aplikacji jest uruchamiany parser klas zachowalnych * parser klas zachowalnych wykrywa zmiany w klasach zachowalnych i generuje: pierwszą wersję pliku struktury danych w SQL-u lub pacz w porównianiu do poprzedniej wersji, oraz nową wersję klasy bazy danych. * parser dodaje do pacza pustą i popsutą metodę migrateData() którą trzeba naprawić i odpowiednio uzupełnić (bez naprawienia się nie skompiluje). * po skompilowaniu uruchamiana aplikacja wykrywa jakie pacze powinna zastosować na bazie i w razie potrzeby ją aktualizuje w pełni automatycznie. To wiem jak zrobić. Natomiast nie wiem, czy generowane funkcje do obsługi bazy danych: 1. Powinny znajdować się w jednej super klasie? 2. Powinny być rozrzucone w klasach serializujących poszczególne obiekty? Ja pierwotnie zrobiłem ten generator struktury baz danych i paczy do nich tak że generował jedną super klasę. Jednak nie wiem czy to prawidłowe podejście. Mi się wydaje, że tak, bo całą logikę bazy danych miałem zawsze w jednej klasie jaką sobie przezywałem using-iem tak by mimo podbijania wersji bazy nic nie zmieniać w kodzie. Jakie są zalety użycia wielu klas (po jednej do każdej zachowalnej klasy? Jak to robią korporacje? Jak się to robi w dużych systemach? dzięki tym co wytrwali do końca pozdro Szyk Cech
Technical Details
Message-ID:
<3RZ_E.825905$w82.303616@fx33.am4>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!news.uzoreto.com!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx33.am4.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!news.uzoreto.com!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx33.am4.POSTED!not-for-mail Newsgroups: pl.comp.bazy-danych,pl.comp.programming,pl.comp.lang.c X-Mozilla-News-Host: news://newshosting.com:119 From: Szyk Cech <szykcech@spoko.pl> Subject: Serializacja obiektów w bazie danych - jakie podejście jest zalecane? User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 Lines: 53 Message-ID: <3RZ_E.825905$w82.303616@fx33.am4> X-Complaints-To: abuse(at)newshosting.com NNTP-Posting-Date: Sat, 27 Jul 2019 15:11:59 UTC Organization: Newshosting.com - Highest quality at a great price! www.newshosting.com Date: Sat, 27 Jul 2019 17:11:58 +0200 X-Received-Bytes: 3163 X-Received-Body-CRC: 3243407335 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit