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
Post a Comment