mercoledì 28 ottobre 2015

java quando usare un pojo e quando le entity

Premessa: stiamo parlando di un contesto in cui c'e' un framework di persistenza nel mezzo se si usa sql e result set il discorso perde di validita'.

Premessa 2: per qualche ragione non c'e' una relazione tra gli oggetti che ficchiamo nel bean

La entity ha il vantaggio di tirare l'oggetto fuori dal db in maniera relativamente veloce ma dall'altro lato se devo visualizzare dati provenienti da piu' entity peggiorano la leggibilita' del codice.

Un pojo ha il vantaggio che tutti i dati vengono da lui ma deve essere "trasformato" e quindi richiede dell'elaborazione in piu'.

Se si tratta di poche righe puo' valerne anche la pena ma se son tante il tempo richiesto per trasformarle in pojo puo' essere tanto.

Come regola generale e' sempre bene limitare il numero di dati da "trasportare" quindi cercando di forzare l'utente ad immettere dei parametri di ricerca
ma se le righe continuano ad essere tante usero' le entity per dare una panoramica generale per poi costruire un pojo nel momento un cui l'utente clicca per accedere al dettaglio...

[Aggiornamento 13/10/2017]

Il discorso di cui sopra e' tutto molto bello, ma non tiene conto di un fatto: hibernate fa un fottutissimo accesso al db ogni qualvolta si fa una set/get/new di una entity questo produce: a) un overhead clamoroso di accessi al db non necessari (il dato ce l'hai gia' oppure non e' detto che se fai il set tu lo voglia salvare davvero in quel preciso istante) b) hibernate gestisce con una $PARTE_POCO_NOBILE gli accessi concorrenti, per cui o ti usi una sequence (o un altro dato univoco) oppure se usi il generic generator e due persone in contemporenea creano una nuova entity avranno lo stesso id con una conseguente primary key violation e non e' esattamente bello.

Quindi se avete un hibernate "vecchio" cazzi vostri e vi dovete gestire il mapping su un pojo a manina, se avete un hibernate piu' nuovo (o JPA) se lo puppa lui con il mapping ma in soldoni mai mai MAI lavorare con le entity...

Nessun commento:

Posta un commento

I messaggi non appaiono subito ma a seguito dell'approvazione di un moderatore. Siete pregati di seguire le seguenti regole