Find before remove
Ieri sera è successo un fatto strano: ho detto una cavolata!
Discutendo dell'opportunità o meno di avere il metodo setId() privato e di effettuare una findByKey() prima di operare una remove(), con la mia solita presunzione (tipica di tutti i programmatori) ho individuato la cosidetta "soluzione ottimale" che consisteva in setId() protetto e non privato e di effettuare una rimozione in questo modo:
try {
MyObject obj = new MyObject();
obj.setId(id);
MyFactory.getInstance().remove(obj);
} catch (DAOException daoe) {
throw new BusinessException(daoe);
}
In questo modo ci ritroveremmo con una lista non indifferente di problemi, tra cui:
Discutendo dell'opportunità o meno di avere il metodo setId() privato e di effettuare una findByKey() prima di operare una remove(), con la mia solita presunzione (tipica di tutti i programmatori) ho individuato la cosidetta "soluzione ottimale" che consisteva in setId() protetto e non privato e di effettuare una rimozione in questo modo:
try {
MyObject obj = new MyObject();
obj.setId(id);
MyFactory.getInstance().remove(obj);
} catch (DAOException daoe) {
throw new BusinessException(daoe);
}
Niente di più sbagliato poteva partorire questa mia saccente testolina! È sempre preferibile fare una find e poi una remove !!!
In questo modo ci ritroveremmo con una lista non indifferente di problemi, tra cui:
- mancata rimozione di eventuali oggetti collegati;
- impossibilità di rimuovere l'oggetto se erano state definite delle proprietà not-null visto che il caro Hibernate le verifica per scollegare altri oggetti.
0 Comments:
Posta un commento
<< Home