🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #195678

Serializacja obiektów w bazie danych - jakie jest zalecane podejście

#195678
From: Szyk Cech
Date: Sat, 27 Jul 2019 15:10
52 lines
3299 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: <gPZ_E.825904$w82.716719@fx33.am4>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx33.am4.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx33.am4.POSTED!not-for-mail
Newsgroups: pl.comp.bazy-danych
X-Mozilla-News-Host: news://newshosting.com:119
From: Szyk Cech <szykcech@spoko.pl>
Subject: Serializacja obiektów w bazie danych - jakie jest
 zalecane podejście
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0
MIME-Version: 1.0
Lines: 52
Message-ID: <gPZ_E.825904$w82.716719@fx33.am4>
X-Complaints-To: abuse(at)newshosting.com
NNTP-Posting-Date: Sat, 27 Jul 2019 15:10:04 UTC
Organization: Newshosting.com - Highest quality at a great price! www.newshosting.com
Date: Sat, 27 Jul 2019 17:10:03 +0200
X-Received-Bytes: 3122
X-Received-Body-CRC: 762315889
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit