Newsgroup: it.comp.java
Titolo: hibernate e pattern dao, mvc

Ciao,
una cosa che non mi è chiara ma hibernate dove si colloca nel pattern 
dao?
Ovvero hibernate gestisce oggetti persistenti. Le classi che vengono 
create non dovrebbero essere passate all'applicazione ma nel pattern 
DAO rappresentare la parte persistente. I DAO per l'applicazione 
dovrebbero poi passare oggetti DTO lavorando sugli oggetti hibernate 
per la persistenza. Giusto?
E' sbagliato usare le classi create con hibernate per rappresentare il 
model nel pattern MVC, giusto?


Secondo me no, ma non sono un esperto. Piu' che altro, sempre secondo me, 
bisognerebbe staccare gli oggetti dalla sessione di Hibernate, prima di 
passarli alla view, altrimenti non e' piu' MVC. 

 > model nel pattern MVC, giusto?Secondo me no, ma non sono un esperto. Piu' che altro, sempre secondo me,


 ha scritto:



Laddove non puo' il mapping di Hibernate, allora procedi come dici. Ma nella 
maggioranza dei casi non dovrebbe essere necessario, questo almeno nel caso 
di database strutturati decentemente..anche il mapping di Hibernate ha dei 
limiti ovviamente.
Non vedo di buon occhio implementare uno strato di oggetti persistenti e uno 
strato model, io l'ho fatto per un progetto medio in cui il la struttura 
delle tabelle relazionali era talmente mal fatta da escludere la 
possibilita' di mapparla sugli oggetti, ma in generale e' un lavoro in piu'. 

 limiti ovviamente.
Con oracle...... ad esempio non mi vede le session e i synonyms.
Io uso il plugin Eclipse Hibernate quanto mappo le tabelle (es. vie) lui mi
crea 2 classi
- via.java
- viaid.java
Perche mi  crea 2 classi?
Poi trovo hql lento rispetto sql, mi sbaglio?

Che hai fatto il reverse engineering?
forse ti crea una classe solo per la chiave composta.. e poi se la
mappa nell'hbm per l' <id> guardaci un po
l'hbm non è più lento dell'sql. quando inizi a gestire query
complesse se il db è ben strutturato vedrai l'utilità di delle query
autogenerate da hibernate... poi magari puoi implementare anche un
meccanismo di cache
ciao
luca ha scritto:


Che hai fatto il reverse engineering?
infatti
forse ti crea una classe solo per la chiave composta.. e poi se la
mappa nell'hbm per l' <id> guardaci un po
giusto viaid.java contiene le get/set sei campi
a questo punto la mia hql sarà from via v where nomevia= '...'
dove via è la classe e npmevia è il campo nomevia è il campo fisico del db,
giusto?
Un'altro dubbio perche hiber non vide i synonyms e sequenzi?
Molto gentile per l'aiuto

non capisco la domanda
con l'inverse eng. ti crea (praticamente semre) la composite-id. per la
tua classe quindi ne hai un'altra mappata che identifica la
chiaveOggetto utilizzata da Hibernate
per le query HQL ti conviene dare un'occhiata alla reference online di
hibernate
http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html
ricorda che nelle hql tu lavori con gli oggetti, dunque con i nomi
delle variabili degli oggetti e non con i nomi colonne delle tabelle
del DB.
se vuoi tirare su il nome di una via da una classe via fai
select v.nomeVia from via as v where v.viaid = (....qui gli passi un
oggetto ViaId che identifica la chiave..)
spero d'aver chiarito qualcosa
luca ha scritto:


Che hai fatto il reverse engineering?
si in eclipse
lui mi crea come detto
via.java
viaid.java (get e set dei campi di vie)
se io faccio
from via v where v.nomevia="" non va non trova nome via, getnomevia si trova
nella classe viaid
from via v where nomevia="" va bene
perche?
Grazie ancora

ancora non capisco
scusa ma che devi trovare?? tutti i record per cui un campo ha nomeVia
di un certo tipo??
penso ci siano altri campi in viaID.. oppure??
la query HQL la devi fare creandoti un oggetto viaID con al suo interno
tutti i campi (chiave) che servono per la query
se getNomeVia sta sotto viaId vuol dire che la tabella di cui hai fatto
il reverse eng. ha come chiave il nome della via... visto che hai un
composite id ce ne saranno sicuramente altri e allora devi specificarli
per fare la query!
Creati un oggetto viaID
ViaID viaId = new ViaID();
fai il set di tutti i campi
viaId.setNomeVia("via Hibernate");
viaId.set??(??);
poi fai la query HQL passando come chiave qs oggetto
luca ha scritto:


 viaId.set??(??);
no devo fare cosi
Via via= new Via()
nome= via.getId().getNomevia()
Strano vero? non riesco a capire....

 
Se il nome fa parte della chiave non è strano, è normale.
Prima devi ottenere la chiave (getId()) e poi, visto che è un oggetto 
composto, puoi ottere il nome.
Delvy

> Se il nome fa parte della chiave non è strano, è normale.
si ma.... se scrivo
form via  v where v.nomevia="..." non mi trova nome perche la  get non si
trova nella classe via.
form via v where nomevia= "..." cosi va
+ normale?

ma cosa c'entra ora
form via  v where v.nomevia="..."
se nomevia sta nella classe che indica la chiave! nomevia sta in ViaID
non in Via!
ripeto NON puoi tirarti su i dati con nomeVia perchè a quanto si è
capito è una chiave composte e nomeVia non è l'unico campo!
Rileggiti il post sopra di come tirarti fuori i dati con un oggetto
ViaId
altro non so dirti.. prova a leggerti la reference o meglio... un libro
luca ha scritto:


>Rileggiti il post sopra di come tirarti fuori i dati con un oggetto
molto gentile ma stai calmino ok?
Forse tu devi leggiere qualche manuale per calmarti, ho chiesto gentilmente
il vostro aiuto.
Ti ho spiegato 3 volte il mio problema e tu ti incazzi perche non lo capisci
Spiego la 4 volta:
il plugin hiber mappa la tabella via (oracle) in 2 classi:
via.java
vieid.java (get get campi)
quando faccio la querry devo scrivere from via v where nomevia= ".."
e facile capire
Non importa sarai stressato trovero un'altro di buon cuore che mi aiuta,
tanto il programmino attualmente va!!!!!!
Grazie per il tuo tempo

ma nn t incazzare
quello stressato sarai te visto che scleri un po su tutti i post che
lasci
uno cerca di dare una mano.... e guarda te
cerca di esprimerti meglio se vuoi un'aiuto
t'ho detto solo di rileggerti il post sopra o meglio un libro.
a questo punto però ti consiglio una donna
luca ha scritto:


>a questo punto perň ti consiglio una donna
calmino come ti permetti
Io non sto sclerando su tutti i post, io chiedo un aiuto e mi vengono fuori
con fatture e tariffari, penso che non sia io quello che sclera.
Mi vuoi aiutare tu? senza fatture e tariffari
Io ho letto un libro hiber č banale, infatti l'applicazione va bene ma
qualche comportamento di hiber non mi č chiaro cosě sono alla ricerca di
qualcuno che ne sappia piů di me.
Se ti va di aiutarmi (senza fatture) ti mando le 2 classi che il plugin
genera
Grazie per avermi dedicato il tuo tempo