Ciao, scusate se posto questa domanda nella sezione Java anche se potrebbe essere inserita anche in una sezione più generica. Alla fine dovendo implementare tutto in java forse questa domanda sta bene anche qui.
Ho un dubbio per gli oggetti DAO. Supponendo di avere un oggetto DTO Document e il suo rispettivo DAO
Ora se ho capito bene, i DAO implementano i metodi CRUD (create, read, update, delete)Codice PHP:public class Document{
private String title;
private String ID;
private String author;
}
Document(){}
e i metodi di setter e getter che per semplicità ometto
e sono quelli pubblici e accessibili dall'oggeto DTO, nel nostro esempio Document
per usare il metodo update del DAO devo scrivere qualcosa del tipo:
Ora da alcuni esempi che ho visto il metodo update prende l'oggetto documento ne estrae tutti i membri, conoscendo l'id del documento aggiorna l'intero record sul DB.Codice PHP:
DocumentDAO.update(document);
Qui nasce la mia perplessità- Se in realtà devo aggiornare solo il campo autore io devo comunque invocare il metodo update della classe DAODocument la quale farà anche l'aggiornamento degli altri campi anche se non è strettamente necessario perchè non sono cambiati. Non si potrebbe effettuare solo l'aggiornamento del campo che è cambiato e comunicarlo mediate il metodo update ? Sarebbe qualcosa di non conforme alla logica DAO?.
Mi veniva im mente di avere un metodo update con una firma del tipo:
non so se questa cosa ha un senso, sono pittosto nuovo alla logica dei DAO.Codice PHP:
public final int ALL = 0;
public final int AUTHOR = 1;
public final int TITLE = 2 ;
....
class DAODocument(){
public update (Document d, int member){
if(null == d.getId() || d.isEmpty())
return ;
switch(member)
case ALL
updateAll( d);
case AUTHOR
updateAuthor(d);
case TITLE
upadteTitle(d);
}
updateAll(Document d){
//set per l'aggiornamento di tutto
}
private updateAuthor(Document d){
//set per l'aggiornamento del solo campo author
}
private updateTitle(Document d){
//set per l'aggiornamento del solo campo title
}
Forse potrebbbe essere sensata se si aggiorna un campo solamente.
Se immaginiamo che la classe Document ha 10 attributi, e dobbiamo aggiornarne 5 si utilizza direttamente update(d, ALL); ma se devo aggiornarne solo uno forse ha senso questa tecnica.
Grazie in anticipo

Rispondi quotando