2011-02-08 11 views
50

Nel contesto di ORM/pigro carico di entità, la mia comprensione del termine "idratazione" è la seguente:chiarirne la terminologia: "idratante" un'entità: proprietà Recuperare dal DB

"idratante" descrive il processo di compilare alcuni o tutti gli attributi precedentemente non popolati di un'entità recuperata utilizzando il caricamento lazy.

esempio: classe Author viene caricato dal database:

@Entity 
class Author 
{ 
    @Id 
    long id; 
    List<Book> books; 
} 

Inizialmente, la raccolta books non viene popolata.

È a mia conoscenza che il processo di caricamento della raccolta books dal database è denominato "idratazione" della raccolta.

Questa definizione è corretta ed è il termine luogo comune? C'è un altro termine più comune che dovrei usare per questo processo?

+1

Alla persona che ha votato per chiudere la domanda: Ho aggiunto un esempio per aiutare a chiarire quello che sto chiedendo. Si prega di commentare se non è ancora chiaro e fammi sapere cosa potrei chiarire. –

risposta

90

Idrato iniziato come un termine per popolare un valore-oggetto/modello esemplificato (ma vuoto) da un db, (in particolare in Sospensione.)

Vari altri ORM e di strumenti come BizTalk utilizzare Idrato e di altri termini correlati questi giorni, (ad esempio BizTalk utilizza il termine disidratata per indicare un'istanza è disponibile, ma non è ancora popolata.)

Personalmente sono contrario a ridondanti terminologia, popolato significa esattamente la stessa cosa, senza il linguaggio metaforico inutile, che non aggiunge altro che confusione.

L'estensione BizTalk di questo stile di linguaggio, in particolare Disidratato è completamente ridondante. Le persone hanno davvero dimenticato come dire, vuoto?

Hydrated e la relativa raccolta di metafore ridondanti sono solo pura lanugine di marketing; non hanno davvero alcun posto come termini tecnici. Purtroppo, Hibernate e altri strumenti che utilizzano questi termini sono ben radicati nel mondo dello sviluppo, quindi Hydrate e il resto sono qui per rimanere.

+12

+1 per "popolato" ... il più semplice è il migliore. –

+6

popolato è anche metaforico ... –

+16

Ovviamente è, tuttavia, è stato il primo, è semplice e come tale è molto meno contorto. Potresti anche aver capito a questo punto che praticamente tutto sul livello del software, anche se un valore di bit è "vero/falso" o "1/0" è metaforico ... Dovremmo iniziare a chiamare "vero" qualcos'altro ora? Che ne dite di "quasi certamente" nei confronti di Heisenberg? – ocodo

4

l'idratazione è un termine sciolto. Nella nostra azienda usiamo la "reidratazione" come termine per caricare tutte le proprietà dell'oggetto di un intero grafico oggetto. Here is a post che parla di vari livelli di idratazione (anche in questo caso si tratta di un uso generale sebbene stiano usando nel contesto di ibernazione).

2

Penso che il termine "idrato (i)" nel contesto di ORM significhi semplicemente che il framework fornisce oggetti. Quindi gli oggetti sono "idratati" dall'ORM dopo che i dati sono stati estratti dal negozio. Il termine può essere applicato ogni volta che un framework ORM fornisce un oggetto/grafico rappresentato nel negozio.

0

il termine idratazione è ampiamente utilizzato nelle viscere della libreria di ibernazione per fare riferimento al processo di impostazione dei campi di un oggetto caricato di recente ed è effettivamente correlato al populaton del grafico dell'oggetto.
ma è diverso dal concetto di caricamento pigro, ovvero fornisce all'utente un oggetto riempito a metà e consente di caricare il resto su richiesta.
l'idratazione viene sempre eseguita, pigramente o con impazienza e si tratta di materiale ibernato.
caricamento pigro è solo per convenienza

sostituire ibernazione con il nome del vostro ORM di scelta

3

In Hibernate nomenclatura, hydration is when a JDBC ResultSet is transformed to an array of raw values:

final Object[] values = persister.hydrate(
    rs, id, object, 
    rootPersister, cols, eagerPropertyFetch, session 
); 

final Object[] values = persister.hydrate(
    rs, id, object, 
    rootPersister, cols, eagerPropertyFetch, session 
); 

Lo stato idratato viene salvato nel attualmente in esecuzione contesto di persistenza come oggetto [EntityEntry] [3], che ha incapsulato lo snapshot dell'entità caricamento-tempo. Lo stato idratato viene quindi utilizzato da:

  • il meccanismo di controllo sporco predefinita, che confronta i dati dell'entità corrente rispetto al carico in tempo un'istantanea
  • cache di secondo livello, i cui elementi di cache sono costruiti dal carico snapshot dell'ora temporanea

L'operazione inversa è denominata dehydration e copia lo stato dell'entità in un'istruzione SQL INSERT o UPDATE.

Problemi correlati