Newsgroup: it.comp.java
Titolo: LOB, Date e Persistenza

Salve a tutti
mi capita spesso di usare nelle mie app BLOB e CLOB...
vorrei adesso passare ad usare HIbernate, ma mi domando...
Si riescono a gestire bene i dati LOB?
Ho letto HIbernate in Action e sono rimasto impressionato positivamente da
come
gestisce le cose, anche se gli esempi che usava il libro erano molto
facili... alla fine erano tutte stringhe
Ma per gestire dati un po' più *particolari* come si fa?
Gestire date, datetime, e LOBè ugualmente semplice? E sopratutto performante
(mi riferisco ai LOB)?
ciao e grazie

nessuno nessuno che mi sa dire qualcosa sui LOB in hibernate???
:-(  pliis




I LOB non sono standard SQl. Il che vuole dire che sono dialettali dei DB.
Le Performance sono un capitolo a parte che anche qua devi fare
separatamente. Nel senso che Hibernate ovviamente abbassa le performance
come qualsiasi framework di alto livello.
I Lob poi a livello di performance essendo dialettali devi andare sulla
documentazione del tuo DBMS e sui forum del tuo DBMS per capire come
ottimizzarli.
Chesso per esempio in PostgreSQL per gestire i BLOB ci sono 2 tecniche, una
binaria e una con file esterno.
Con la tecnica binaria viene "sparato" l'intero oggetto nel DB in modo
diretto. E funziona perfettamente per file fino a una certa dimensione, non
vorrei dire una cazzata ma il "confine di stato" e' 1 mega quindi sopra i
200k ti scatta il dubbio.
Il file esterno di fatto memorizza il Blob su file system e un suo
riferimento nel db. I contro sono che devi gestire bene il delete per
evitare "scorie"
Con hibernate non ricordo bene se ti tiene un BLOB nel pojo , sicuramente
non se usi la strada non binaria. Certo senza fare grandi ricerche su google
mi viene da pensare che la persistenza in generalee e il BLOB si azzuffano
come un cane e un gatto. Cioe' la persistenza nasce per cashizzare i dati di
un'entita' in modo da evitare il fatch continuo a database per la stessa
entita'. Poiche' i Blob sono oggetti che vanno a dimensioni infinite mi
viene il dubbio che non e' una grandissim aidea cachizzarli. Se per esempio
hai un oggetto da 20 giga direi che in memoria non ci sta da solo e quindi
cachizzarlo fa venire in mente piu' cose voodo o comiche che reali.
Quindi sui BLob se vuoi usarli direi che ti fai una bella ricerchiina sul
tuo DBMS e senti che dicono la.
Visto che ti stai appassionando ad hibernate e credo tu sia in fase di
studio vorrei invitarti a studiarne bene il modello a oggetti. Hibernate
infatti compie una sorta di miracolo se lo usi in modalita' direct e cioe'
fa vedere all'applicazione il db a oggetti anche se fisicamente "stora" i
dati su un relazionale e 99% di noi poi utilizza db relazionali nella vita
quotidiana.
Per fare cio' vuole dire che tu devi progettare il db a oggetti nei file
hql, poi fai creare ad hibernate il db fisico ( Per fare ciop' ci sono vari
modi il piu' elementare e' deployare l'applicazione e basta e alcuni
appserver generano direttamente in update o in drop, vedi documentazione,
altrimentoi lo fai a mano col tool apposito, in pratica un colpo di mouse o
un command). L'applicazione vede un db a oggetti puro, e hibernate fa tutto
il casino per gestire il relazioneale tradizionale che tutti usiamo.
Ovviament ele prestazioni degradano ancora ma fregatene che prima di mettere
in crisi i dbms di oggi ( tutti da Oracle a SQL Server a Postgres) ci vuole
veramente ma veramente tanto.
A questo punto per te il db non e' piu' quello che vedi nel DBMS ma quello
che vedi nei file HQL. Se poi passi a EJB3 ( consigliato ) spariscono pure i
file hql e finisce tutto nelle "chiocciole" ma vabbe questa e' un'altra
storia :-)))
Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/