Skip to main content

Digilasku osa 5


Digilaskussa siirretään suurin osa usein tarvittava tietokannassa oleva data ohjelman muistiin. Vaatimella tämä onnistuu helposti, kunhan ymmärtää miten instanssit ja istunnot toimivat. Tavoitteena on siis hakea data aina kerran ja vain siihen liittyvään istuntoon.

Vaatimessa on oma metodinsa, jolla saa nykyisen instanssin sovelluksesta, mutta se osoittautui ongelmalliseksi. Ratkaisuna käytimme ThreadLocal patternia, josta kirjoitettu lisää mm. täällä

Käytännössä, kun ohjelmainstanssi luodaan, se tallennetaan staattiseen muuttujaan, joka on sidottuna ainoastaan nykyiseen instanssiin (säikeeseen).

private static ThreadLocal<DigilaskuApplication> instance = new ThreadLocal<DigilaskuApplication>();

Jos halutaan käsitellä jotain instanssiin liittyviä tietoja, siihen päästään käsiksi helposti mistä tahansa ohjelmaa

Instanssiin liittyvän tiedon haku

DigilaskuApplication.getInstance().getDataCache().getSomePieceofData();

Käyttäjän tallennus

DigilaskuApplication.getInstance().setUser(user);

Comments