Strutture di persistenza e buon senso

2

Ho studiato alcune strutture di persistenza principalmente Hibernate, DORM, TMS Aurelius e mi chiedo. In un modello di tipo:

TOrderFiscal < > ----- > Items < > -------- > TOrderItem ------- > TProduct

TOrderFiscal --------- > TSuplier --------- > TCidade -------- > State

Ogni classe di questo con innumerevoli attributi, tutti mappati correttamente alle loro tabelle e campi corrispondenti. Quando si trasporta una nota senza usare "Lazy Load" si farebbe sempre con diversi join selezionare tutti i campi da ciascuna di queste classi.

Ma sarebbe uno spreco poiché la nota ha bisogno solo del codice fornitore e degli attributi del nome, gli attributi OrderItem richiedono solo il codice, il nome qty. magazzino.

Quale soluzione dovrebbe essere presa per creare un fornitore di classe specifico di note solo con questi attributi? ad esempio

TOrder <> ----- > Items <> -------- > TOrderItem ------- > TNotaItemProduct

TOrder -------- > TOrderSupplier

Se questa è la soluzione, cosa succede quando una regola aziendale in TProduct dovrebbe essere anche TOrderItemProduct? Ho duplicato il codice in entrambe le classi? Patrimonio, ad esempio TORderItemProduct e TProduct che ereditano entrambi da TBaseProduct?

O è una preoccupazione che noi programmatori non dovremmo avere?

    
posta user3524905 12.04.2014 - 18:08
fonte

1 risposta

1

Questo è quello che usiamo Hibernate Query Language (hql) per - per selezionare solo i dati desiderati quando l'intero Web dell'oggetto non è necessario. Ad esempio:

select new map (s.code as sCode, s.name as sName, i.code as iCode, i.qty as qty, i.name as iName, i.stock as stock)
from TOrderFiscal tof 
join tof.suplier s
join tof.items i
join i.product p
where p.id = 12345;

Riceverete un elenco di mappe di stringa su oggetto, in cui ogni elemento dell'elenco è una riga nel set di risultati rappresentato come una mappa degli alias di campo selezionati per i valori dei campi.

    
risposta data 14.04.2014 - 22:04
fonte

Leggi altre domande sui tag