Kezdőoldal » Számítástechnika » Programozás » Hogyan bánjak Javában az...

Hogyan bánjak Javában az adatbázisból érkező kvázistatikus adatokkal?

Figyelt kérdés

Akarok egy osztályt, amelyik lekérdez egy ritkán változó táblát, és ebből rendezett adatokat szolgáltat a többi osztálynak. Simán lehetnének csak statikus metódusai, nem is kéne példányosítani, de mi van, ha változnak az inicializálás után az adatok?

a) Csinálok egy frissítő metódust, és a klienseknek azt kell először meghívniuk (ez mintha sértené a zártság elvét, meg elvileg nem üzembiztos).

b) Mindegyik statikus metódus frissíti az adatokat híváskor. Lehet, hogy többe kerül a leves, mint a hús.

c) Betárolom az utolsó frissítés idejét, és ha nagyobb, mint 1 óra, akkor újra frissítek.

d) Hagyjam a fenébe az egészet, és legyen inkább példányosítva, mert akkor biztosan frissek benne az adatok?

Mindegyik működőképes, de melyik az elegáns?



2017. nov. 20. 23:34
 1/7 A kérdező kommentje:
e) Megmondom a felhasználóknak, hogy ha változott az a tábla, mióta megnyitották a panelt, akkor zárják be és nyissák meg újra. Nincs sok felhasználó, talán így is működik. A tábla lehet, hogy hónapokig nem változik érdemben, de ha mégis pont akkor, az rossz.
2017. nov. 20. 23:47
 2/7 anonim ***** válasza:
49%
f) A tablaban tarolod az utolso modositas idejet. Minden getter ellenorzi, hogy a tabla friss-e. (MySQL: [link] )
2017. nov. 21. 01:23
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

"Akarok egy osztályt, amelyik lekérdez egy ritkán változó táblát, és ebből rendezett adatokat szolgáltat a többi osztálynak. Simán lehetnének csak statikus metódusai, nem is kéne példányosítani, de mi van, ha változnak az inicializálás után az adatok?


- Felejtsd el. Statikus osztályban nem tárolunk állapotot. A betöltött adatok pedig az adatbázisod egy állapotát tükrzik.



a) Csinálok egy frissítő metódust, és a klienseknek azt kell először meghívniuk (ez mintha sértené a zártság elvét, meg elvileg nem üzembiztos).


- A kliensre nem bízhatod ezt, először is duplikálod az adatelérés logikáját másrészt nem lehetsz benne biztos, hogy minden kliens hívni fogja a frissítést, harmadrészt ha frissítesz, ha kell, ha nem célját vesztik a letárolt adataid.



b) Mindegyik statikus metódus frissíti az adatokat híváskor. Lehet, hogy többe kerül a leves, mint a hús.


- Másodszor is leírom. Felejtsd el a statikus metódusokat. Nem erre valók.

- Ha minden metódus frissíti az adatokat, akkor egyáltalán minek tartod őket memóriában?



c) Betárolom az utolsó frissítés idejét, és ha nagyobb, mint 1 óra, akkor újra frissítek.


- Ha az adatok valóban ritkán változnak ÉS a programodon kívül más is változtat az adabázison, akkor ez az egyetlen jó megoldás.

- Ha csak a programod piszkálhatja az adatbázist, akkor azon belül kell megoldani a már betöltött adatok frissítését.



d) Hagyjam a fenébe az egészet, és legyen inkább példányosítva, mert akkor biztosan frissek benne az adatok?


- A példányosítástól miért frissülnének az adatok? WTF.?

2017. nov. 21. 04:20
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
Mert a példányosításkor a konstruktor lekérdezi.
2017. nov. 21. 06:35
 5/7 A kérdező kommentje:

A c) is értelemszerűen a statikus metódusokra vonatkozott. Ha nem használom őket, akkor felesleges.


#2: az utolsó változtatás idejét le tudom kérdezni közvetlenül a táblából, de ennek majdnem akkora költsége van, mint lekérdezni magukat az adatokat (pár tucat rekordról van szó).

2017. nov. 21. 06:39
 6/7 anonim ***** válasza:
Kérdezd le minden alkalommal! Pár tucat rekord lekérdezése hosszú évek óta nem költség.
2017. nov. 21. 07:14
Hasznos számodra ez a válasz?
 7/7 A kérdező kommentje:

Valószínűleg ez lesz, nem nagy költség se a lekérdezés, se a példányosítás. Igazából az érdekel, hogy eszmeileg mi a szép megoldás egy ilyen problémára.


Lehetne csinálni egyke osztályt is, és a getInstance() frissítené az adatokat. Így nem keletkeznek felesleges objektumpéldányok, és mégis mindig friss adatok lennének benne.

2017. nov. 21. 07:52

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!