Newsgroup: it.comp.java
Titolo: [esperti] performance entity

Salve gente,
ho notato una lentezza esorbitante nell'accesso al DB tramite entity
Premetto che il mio DB è un Oracle9i e che le tabelle in questione
contengono svariati migliaia di record.
Il server su cui è installato l'AS è un UNIX tru64 (quindi con
performance esaltanti)
eseguendo le query e le insert tramite SQL la risposta è immediata
(dell'ordine del 1/2 secondo) ma se le stesse query le eseguo con un
metodo finder dell'entity o paggio ancora eseguo un inserimento
tramite create, il risultato è impressionante.
es: un inserimento viene eseguito in circa 40 secondi.
domanda: gli entity utilizzano in qualche modo gli indici sul DB?
         quali accorgimenti possono essere presi a livello di codice
per poter migliorare le prestazioni degli entity?
spero di essere stato chiaro
grazie a tutti
vi sarei grato se mi inviasste una copia della risposta via e-mail
arigrazie
Carlo

Che AS stai usando ?
Io ho usato JBOSS 3.2 ed ho avuto gli stessi problemi. Dopo avere 
provato un casino di soluzioni abbiamo totlo gli entity ed andiamo 
diretti sul DB, con un noteole differenza di velocità. Ho sentito 
parlare bene di Hibernate, molti lo usano, solo che non permette il 
semplice utilizzo delle primary key con più di un campo.
ciao
Andrea


Carlo - Mavy  dall'ufficio wrote:

io uso jboss 3.2 su un DB postgres usando solo session bean (simulano gli 
entity, anche se i blueprints lo sconsigliano fortemente) e ho tabelle con 
diverse migliaia di righe e le insert/update/delete/select sono performanti 
(il grosso del tempo viene perso per serializzare i risultati e mandarli 
alle jsp di presentazione).
Immagino che le connessioni verso il tuo DB siano gestite in pool, quindi 
tieni presente che è il pool dell'AS a gestire le commit e le roolback 
indipendentemente.
Ad esempio può capitare che tu esegua una insert tramite un tuo EJB (session 
e entity non importa) e però i dati vengano scaricati sul DB (filesystem) 
in un momento diverso. In ogni caso però se dopo la insert esegui subito un 
metodo di find sempre tramite EJB il dato è a disposizione subito.
Se lo cerchi invece tramite una consolle direttamente sul DB non trovi 
nulla.
Un test che puoi eseguire è il seguente: esegui la insert (quella che 
impiega + di 40 sec.) e subito "spegni" l'AS e verifichi la presenza del 
dato in tabella.
A parte queste problematiche, mi interessarebbe molto sapere le impressioni 
di chiunque sulle prestazioni degli EJB (session e entity) local/remote sui 
diversi AS.

...


 ci sarà pure una soluzione.... si spera
Leggere Bitter EJB, per esempio
uL

...


 Leggere Bitter EJB, per esempio
e cioè?
dove si trova?
un linkino?

 Leggere Bitter EJB, per esempio
Evvia, argomenta, argmenta. :) Che dice di bello il Bitter?
-- 
You dont know what to do when you dont know what you're doing.
http://space.tin.it/computer/csadun

 
Ma no, è un libro come un altro. E' solo che gli ejb, fra le varie altre 
"particolarità", hanno da essere usati per bene.
Personalmente non li amo particolarmente, ma dai tempi che leggo sulla 
mail si deduce facilmente l'uso improprio.
Da qui il consiglio di leggere "Bitter EJB" (da comprare), o il libro di 
Marinescu (free), o Core J2ee patterns (sito sun), o simili.
uL