The SmartWeb Project

10 novembre 2005

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);
  }


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:
  1. mancata rimozione di eventuali oggetti collegati;
  2. impossibilità di rimuovere l'oggetto se erano state definite delle proprietà not-null visto che il caro Hibernate le verifica per scollegare altri oggetti.
Quindi continuate a farvi domande e continuiamo a discuterne, anche quando sfodero la parte peggiore del mio caratere state certi che le vostre critiche e riflessioni ci fanno maturare tutti.