Newsgroup: it.lavoro.informatica
Titolo: Domanda su Oracle

Ciao,qualcuno consosce qualche ng specifico dove chiedere
cose su Oracle ? (in particolare accade che l'applicazione scritta usando
hybernate e deployata su jboss, quando parte sembra creare correttamente
le tabelle del DB e, dai log, sembra anche che inserisca i dati
correttamente. Pero' poi andando a vedere il DB con un client si trovsa
che le tabelle sono effettivamente state create ma i dati che dovrebbero
essere in esse contenuti non ci sono)
Ciao,
Marco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 essere in esse contenuti non ci sono)
Hai uno stralcio di codice?


Atra cosa, che livello di log stai usando?
Provalo a mettere a debug, se già non lo hai fatto, e prova a vedere
cosa ti dice il log...

 cose su Oracle ?
Certa la documentazione di TKPROF, attiva il Trace (disattivalo quando
hai finito) e vedi cosa arriva al DB.
--
ale
http://ale.riolo.co.uk

 essere in esse contenuti non ci sono)
Scrittura fatta su log, tabella vuota -> dà l'idea che non esegue la
commit per qualche motivo

Marco
hbm2ddl
c'e' un parametro nelle configurazioni di hibernate
( esattamente il file in cui lo trovi dipende se usi ejb3 oppure normal" )
che si chiama
hbm2ddl
che a seconda di come lo setti
se ricordo bene
UPDATE/CREATE/CREATEUPDATE/.... o roba simile
che se messo su create crea il db nuovo ogni volta
googla e lo becchi subito
ciao 
Nicola
-- 

 
Senza saper ne leggere ne scrivere manca il commit.
-- 
Rotellaro
/************************************
   There's no point being grown-up
   if you can't be childish sometimes.
   (The fourth Doctor)
 
http://rotellaro.blogspot.com
*************************************/


Se non hanno il db solo come collezione di tabelle piatte, magari il 
popolamento si interrompe ad un certo punto per la violazione di qualche 
constraint, rollbackando tutto.

 essere in esse contenuti non ci sono)
oracle c'entra poco, c'entra invece il transaction manager. cosa usate, 
spring, jta? ci sono eccezioni?

ispas ha scritto:


Pare che effettivamente fosse cosi'. Settando nel file di configurazione
di hybernate autocommit a true funziona.
Mi dicono che e' una cosa non si dovrebbe fare, perche' pare che jboss
dovrebbe gestire da solo le transazioni; pero' quello che me lo ha detto
non era sicuro se questo valesse solo nel caso in cui si usino ejb;  al
momento esponiamo solo web services e non usiamo ejb. Per ora abbiamo
risolto cosi' (con autocommit a true nel file di configurazione di
hybernate), poi vedremo se si deve fare qualche settaggio di jboss.
Ciao,
Marco.


 spring, jta? ci sono eccezioni?
No, non ci sono eccezioni. Pare che tutto funzioni mettendo autocommit a
true nel file di configurazione di hybernate.
Ciao,
Marco.


 Senza saper ne leggere ne scrivere manca il commit.
Pare che effettivamente sia cosi'.
Ciao,
Marco.


 true nel file di configurazione di hybernate.
ribadisco, l'hint è il transaction manager.
qui c'è un po' di roba da leggere:
http://www.jboss.org/jbosstm/documentation.html
se usate spring:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html
non ci sono alternative va capito *bene* come funziona.

 hybernate), poi vedremo se si deve fare qualche settaggio di jboss.
Premetto che di hybernate e jboss non so niente, però una autocommit
sembra anche a me pericolosa.
La commit normalmente è comandata dall'applicativo, che decide cosa
fare in caso di errore/eccezione, infatti alcune eccezioni possono
essere tranquillamente gestite, altre no.
Può essere, anzi deve essere, che hybernate o jboss ti consente di
fare queste scelte tramite opportuna configurazione.

 hybernate), poi vedremo se si deve fare qualche settaggio di jboss.
ma il codice lo posti ?
scommetto che su toad hai settato autocommit :)
come dice ispas, deve essere la tua procedura a sollevare
un'exception per il commit e una per il rollback,
altrimenti non sai perche' va il uno o nell'altro caso,
e finirai per passare la vita a fare insert, anzi peggio
a duplicare dati in tabella, se ti manca un minimo
di univocita'/integrita'
felice&pago
barista
.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html
Grazie.
Ciao,
Marco


 di univocita'/integrita'
il problema è che lui commit o rollback *non* le deve dare.
quando si legge che gli ejb sono transazionali significa che già 
contengono tutti gli elementi per gestire la transazione. in soldoni tu 
chiami un metodo degli ejb, se esce regolarmente tutte le operazioni 
database in esso contenute vengono committate mentre se esce con una 
eccezione vengono tutte annullate con una rollback.
programmaticamente sulla connessione non va fatto niente perché è chiaro 
che mandi all'aria il modello. va solo capito bene come funziona questo 
modello e scritto i programmi di conseguenza. da notare che le 
transazioni possono essere xa quindi distribuite su più database anche 
diversi fra loro.
nel caso di specie ho la sensazione che lui non abbia affatto chiaro 
come funziona questo modello e che vada abbastanza a tentoni.

 eccezione vengono tutte annullate con una rollback.
e come si fa a sapere il motivo per cui sono
usciti con rollback ?
devi gestire delle exception ?
lo fa' l'ejb ?
felice&pago


 lo fa' l'ejb ?
va gestito l'eccezione al di fuori dell'ejb anzichï¿œ dentro.
in realtï¿œ esiste la possibilitï¿œ di intervenire a mano sulla transazione 
ma va fatto sul transaction manager e mai sulla singola connessione.

 ma va fatto sul transaction manager e mai sulla singola connessione.
Come dice rootkit, sono gli stessi metodi ejb che in fase di
dichiarazione vanno impostati come transazionali (ad esempio
requiredNew per staccare una nuova transazione, Required per ereditare
quella del chiamante), in caso di eccezione sulla catena delle
chiamate ejb basta fare un rollback ed automaticamente vengono
scartate tutte le modifiche effettuate anche su piu' database ed
effettuate da tutta la catena degli ejb Questa e' una peculiarita'
delle XA transaction che servono appunto per gestire questo tipo di
problematiche...
Se tutti gli ejb che partecipano alla sessione vanno a buon fine e' lo
XA transaction che automaticamente chiama il commit.

 XA transaction che automaticamente chiama il commit.
Pare che lo debba fare anche se non si usano ejb, ma che in questo caso si
debba configurare una factory diversa, almeno cosi' ci e' sembrato di
capire (poi i dettagli li ha visti direttamente il programmatore)
Qualcuno chiedeva il codice:
vado a memoria, perche' ora non ce l'ho sotto mano, dovrebbe
essere una roba del tipo:
   Session session = factory.openSession();
   Transaction tx = session.beginTransaction();
   session.save(<dato da salvare>);
   ...
   HibernateUtils.close(session, ...)
Ciao,
Marco


    HibernateUtils.close(session, ...)
Usate tx.commit();?
--
ale
http://ale.riolo.co.uk

 per evitare che si facciano queste cose, delegandole a loro.
Senza riferimento alla tua applicazione, ma parlando in generale,
vorrei dire che spesso il fatto di "delegare" è solo un'illusione
ottica. Infatti non è che cambia molto, nella sostanza, scrivendo i
comandi nel file di configurazione XML piuttosto che direttamente nel
linguaggio di programmazione.
Se la tua problematica è abbastanza standard il tool o framework ti
sarà sicuramente molto utile, perchè avrai poco da configurare.
Ma se così non è l'utilità è tutta da verificare attentamente.
Tra l'altro: passi da 1 solo a 2 linguaggi da conoscere; sostituisci
un linguaggio compilato staticamente ,o JIT, con uno interpretato;
puoi avere problemi di prestazione in casi un pò meno banali, dove per
es. una select va regolata finemente. In quest'ultimo caso, ad es.,
non mi sembrerebbe un gran passo avanti il fatto di scrivere la select
ottimizzata dentro il file di configurazione, piuttosto che nel
sorgente Java.

 linguaggio di programmazione.
se per "comandi" intendi istruzioni sql l'unico orm che io conosca e che 
esternalizza in xml è ibatis.
per il resto su xml si scrivono le configurazioni e anche in modo molto 
limitato, che sia jpa, jdo, hibernate le configurazioni statiche si 
scrivono come meta-informazioni su annotations.