anonimizzato
16-06-2010, 20:29
Ciao a tutti,
premetto che conosco poco JAVA ma per via di un progetto al lavoro completamente fatto in JAVA e Oracle me lo devo studiare per bene. :fagiano:
Si tratta di un progetto Web con le seguenti tecnologie: Spring, iBatis, Maven e Oracle con uso intensivo di PL/SQL.
In pratica il dubbio che ho è che noi adesso abbiamo alcuni Model (MVC) che mappano le tabelle del DB a cui l'applicazione accede per la persistenza dei dati.
Facciamo un esempio: tabella Utenti con campi:
- id (int)
- nome (string)
- cognome (string)
- comune_id (int)
sui primi 3 campi nessun problema, avrò la mia classe Utente con getter e setter per ogni proprietà.
Il comune invece è una chiave esterna che referenzia un record della corrispondente tabella comuni.
In sostanza quello che noi abbiamo ora è che campi come il suddetto comune_id sono a tutti gli effetti "proprietà complesse" su tipi oggetto
Comune comune;
questo comporta che ogni volta che creo un oggetto di tipo "Utente" tutte le relative proprietà mappate su chiavi esterne eseguono una query al DB per recuperare le info e costruire l'oggetto relativo ed il tutto "a cascata" pena indicibili errori e sofferenze nei log dell'applicazione e del tomcat. :asd:
es:
- Utente
-- id
-- nome
-- cognome
-- comune
----id
----nome
----provincia
------id
------nome
------regione
--------id
--------nome
Ovvero la proprietà "comune" incapsulerà a sua volta "provincia" che a sua volta incapsulerà regione.
Il tutto senza che magari sia necessario veramente accedere al nome del comune piuttosto che alla provincia o regione.
Infatti questo lavoro viene fatto anche per una INSERT a DB quando nella tabella "Utenti" poi l'unica cosa che verrà scritta nel record è "comune_id".
Da ciò quindi pure la necessità di creare appositi "PropertyEditor" in Spring per mappare correttamente tali proprietà complesse.
Ovviamente è uno spreco di risorse, ho fatto presente la cosa ma mi hanno detto che è necessario fare così. :fagiano:
Se creo un oggetto Utente per salvarlo a DB devo eseguire anche 3 query a DB per recuperare: comune, provincia e regione quando devo solo mettere l'id di comune nella tabella Utenti che magari prendo direttamente dal menù a tendina della form.
Siccome ho esperienza di Framework MVC come Symfony (PHP) o RoR (Ruby) e una cosa del genere non stà ne in cielo ne in terra mi viene più di un dubbio.
Potete aiutarmi a capire meglio?
Spero di essermi spiegato bene.
Ciao.
premetto che conosco poco JAVA ma per via di un progetto al lavoro completamente fatto in JAVA e Oracle me lo devo studiare per bene. :fagiano:
Si tratta di un progetto Web con le seguenti tecnologie: Spring, iBatis, Maven e Oracle con uso intensivo di PL/SQL.
In pratica il dubbio che ho è che noi adesso abbiamo alcuni Model (MVC) che mappano le tabelle del DB a cui l'applicazione accede per la persistenza dei dati.
Facciamo un esempio: tabella Utenti con campi:
- id (int)
- nome (string)
- cognome (string)
- comune_id (int)
sui primi 3 campi nessun problema, avrò la mia classe Utente con getter e setter per ogni proprietà.
Il comune invece è una chiave esterna che referenzia un record della corrispondente tabella comuni.
In sostanza quello che noi abbiamo ora è che campi come il suddetto comune_id sono a tutti gli effetti "proprietà complesse" su tipi oggetto
Comune comune;
questo comporta che ogni volta che creo un oggetto di tipo "Utente" tutte le relative proprietà mappate su chiavi esterne eseguono una query al DB per recuperare le info e costruire l'oggetto relativo ed il tutto "a cascata" pena indicibili errori e sofferenze nei log dell'applicazione e del tomcat. :asd:
es:
- Utente
-- id
-- nome
-- cognome
-- comune
----id
----nome
----provincia
------id
------nome
------regione
--------id
--------nome
Ovvero la proprietà "comune" incapsulerà a sua volta "provincia" che a sua volta incapsulerà regione.
Il tutto senza che magari sia necessario veramente accedere al nome del comune piuttosto che alla provincia o regione.
Infatti questo lavoro viene fatto anche per una INSERT a DB quando nella tabella "Utenti" poi l'unica cosa che verrà scritta nel record è "comune_id".
Da ciò quindi pure la necessità di creare appositi "PropertyEditor" in Spring per mappare correttamente tali proprietà complesse.
Ovviamente è uno spreco di risorse, ho fatto presente la cosa ma mi hanno detto che è necessario fare così. :fagiano:
Se creo un oggetto Utente per salvarlo a DB devo eseguire anche 3 query a DB per recuperare: comune, provincia e regione quando devo solo mettere l'id di comune nella tabella Utenti che magari prendo direttamente dal menù a tendina della form.
Siccome ho esperienza di Framework MVC come Symfony (PHP) o RoR (Ruby) e una cosa del genere non stà ne in cielo ne in terra mi viene più di un dubbio.
Potete aiutarmi a capire meglio?
Spero di essermi spiegato bene.
Ciao.