2009-07-02 2 views
5

Sto avendo un problema. Vorrei creare oggetto Document e vorrei avere una proprietà utente con il tipo com.google.appengine.api.users.User (sul sito dei documenti di GAE, hanno detto che dovremmo usare questo oggetto al posto di un indirizzo email o qualcos'altro, perché questo oggetto probabilmente sarà incantato per essere unico). Ma ora l'oggetto non può essere compilato da GWT, perché non ho la fonte per quell'oggetto. Come posso risolvere il problema?GWT + GAE/J, inviando oggetti JDO attraverso il filo, ma come?

Ero alla ricerca di documenti sulle DTO, ma ho capito che forse non è il modello migliore che dovrei usare.

Che cosa mi consiglia?

Grazie mille per il vostro aiuto!

saluti, Bálint Krivan

risposta

3

da evitare DTOS per gli oggetti con com.google.appengine.api.users.User dentro probabilmente si può utilizzare il lavoro da http://www.resmarksystems.com/code/ Ha costruire wrapper per i tipi di dati Nucleo GAE (Chiave, Testo, ShortBlob, Blob , Link, Utente). L'ho provato con datastore.Text e ha funzionato bene.

+0

Grazie per avermi guidato. Forse quello che stavo cercando :) Btw, non sono ancora sicuro di usare o non usare DTO;) –

2

Ci sono un sacco di dibattito sul fatto che si dovrebbe essere in grado di riutilizzare gli oggetti dal server sul client. Tuttavia, il riutilizzo raramente funziona bene in applicazioni reali, quindi in genere consiglio di creare oggetti java puri in cui si copiano i dati da inviare al client. Ciò consente di adattare i dati a ciò che è necessario sul client ed evitare le insidie ​​in cui si inviano accidentalmente informazioni sensibili sul filo.

Pertanto, in questo caso, è consigliabile creare un oggetto separato da inviare sul filo. BTW se si ha l'SDK AppEngine per Java (http://code.google.com/appengine/downloads.html), include un'applicazione demo che ho fatto (appiccicosa) che dimostra questa tecnica.

+0

Ciao! Grazie per la risposta! Ho controllato la tua fonte, sembra promettente, ma ho capito che stai usando direttamente l'API Datastore. Non è anche l'uso dettagliato dell'implementazione? Forse se usassi JDO, sarebbe un po 'più astratto (se distribuissi la mia applicazione su un altro servizio che non su GAE), ma mi da fastidio un po', che ho "duplicazione", ovviamente guadagno di più controllo su quali informazioni realmente invio. Ci penserò, ma probabilmente sceglierò DTO. –

0

Ho avuto la stessa domanda, la tua risposta è interessante, ma sono sempre triste nel copiare due volte un dato ... Inoltre, quando il tuo dao riceve i dati, dovrai analizzare tutti i risultati per copiarli sul puro oggetto java, non è vero? Sembra essere un'operazione pesante. Qual è la tua opinione su queste domande?

1

questo question risolve anche il problema: Si collega a una soluzione semi-lavorabile per rendere automaticamente compatibili gli oggetti persistenti compatibili con gwt-rpc.