Dove devo analizzare i dati ottenuti con un DAO

2

Ho un DAO che porta dati da un servizio web, che i dati arrivano in una stringa, in:

*NAME|John Doe *DATEOFBIRTH|1978-23-01*ID|anID123 (...)

Ho un DTO che voglio riempire con i dati analizzati (il DTO ha campi come nome, data di nascita, id ...)

Quindi, la mia domanda è, qual è la migliore pratica:

  • Analizzare la stringa nel DAO per riempire il DTO
  • Passando la stringa di dati al DTO e al DTO stesso, analizza la stringa e si riempie automaticamente
  • Esegui l'analisi in una classe di utilità che riceverà la stringa e restituirà il DTO di riempimento

DAO: Data Access Object

DTO: Data Transfer Object

Nota: ho tenuto questo linguaggio agnostico in modo che potesse essere utile a chiunque utilizzasse linguaggi orientati agli oggetti, ma, nel mio caso particolare, sto usando Java.

    
posta jsedano 07.05.2013 - 17:15
fonte

2 risposte

5

Tipicamente è possibile utilizzare un costrutto unmarshalling .

Il lavoro di unmarshaller sarebbe semplicemente quello di tradurre dalla stringa al DTO specifico del tuo dominio. Il tuo DAO o DTO non avranno bisogno di cambiare se il formato di trasmissione cambia. Inoltre, la strategia di unmarshalling può essere derisa per i test unitari (e testata separatamente). A seconda del modello di architettura aziendale, puoi richiamare l'Unmarshaller ovunque (nel DAO, nel DTO, usando AOP, ...).

Molti pacchetti software ampiamente utilizzati usano il concetto di marshalling / unmarshalling che include Spring , JAXB e AWS Java SDK . Ti suggerisco di dare un'occhiata a queste librerie per avere alcune idee su come puoi implementare e adattarle al tuo design (potresti trovare una soluzione pronta e adatta alle tue esigenze).

    
risposta data 07.05.2013 - 17:56
fonte
2

Il DTO dovrebbe essere responsabile del riempimento dei propri campi dal risultato dell'analisi, poiché i campi sono specifici del DTO.

L'analisi stessa può aver luogo altrove, ma Java ha una funzione Split() , così il tuo già conosce come analizzarlo. Quindi appendi semplicemente una funzione Parse(string) sul tuo DTO.

    
risposta data 07.05.2013 - 17:48
fonte