Newsgroup: it.comp.java
Titolo: consiglio su persistenza

ciao a tutti,
	sono in proncinto di iniziare un progetto per la realizzazione di 
un'applicazione di data-mining.... e come in ogni nuovo progetto mi 
pongo delle domanda su quanto sia coneveniente ri-utilizzare del codice 
che ho già pronto proveniente da applicazioni scritte in passato oppure 
optare per tool più affermati come hidernate o simili ?
Quanto un tool come hibernate può velocizzare lo sviluppo e la 
portabilità di un'applicazione nel tempo ? E quanto invece complica la 
gestione del progetto introducendo un sacco di funzionalità che non sono 
necessarie ???
Mi date un parere su queste mie perplessità?
-- 
Mess
http://www.mibmagazine.it

 Mi date un parere su queste mie perplessità?
Prova a cercare opinioni, articoli e codice su Hibernate, Cayenne, EOF 
e TopLink.
Il supporto dagli autori e dalla comunita'.
Ciao
Mirko

> Mi date un parere su queste mie perplessità?
Secondo me molto dipende da cosa devi fare . Personalmente lavoro 
principalmente su oracle e dividerei la cosa in questa maniera :
per la parte di ETL non utilizzerei mai java direttamente ma +ttosto gli 
strumenti nativi del database (nel mio caso warehouse builder/plsq)
Nel caso di datamining con Hibernate non ho poi idea quanto possa essere 
oneroso fare a posteriori (aumentando il volume dei dati in genere) 
tuning sulle query e magari modificarle, cosa che in realtà dinamiche 
capita spesso.
[..]

Ti Ringrazio molto per la Tua opinione ma come temevo noto che ci sono 
pareri diversi.
Hai affermato che molto dipende dal tipo di applicazione... 
L'applicazione richiesta dovrebbe essere di scala enterprise e quindi in 
grado di gestire un grande quantità di dati nel tempo parliamo (una 
volta a regime) nell'ordine qualche migliaio al giorno.
La mia perplessità nasce dal fatto che molte delle strutture tipiche di 
un  data access layer (generatore di chiavi, Lock Managaer, Connection 
Pooler ecc) sono già state scritte e testate per applicazioni precedenti 
e quindi mi chiedevo quanto valga la pena passare ad un tool esterno ma 
più rinomato ed affermato...
Un ultima cosa che non ho trovato da nessuna parte sono le performance? 
qualcuno sa darmi qualche indicazione in merito alle prestazioni di 
hibernate ? E' "pesante" da inserire in un'applicazione?
Ringrazio ancora e saluto
-- 
Mess
http://www.mibmagazine.it


 hibernate ? E' "pesante" da inserire in un'applicazione?
E' sicuramente piu' pesante che utilizzare delle semplici query jdbc, 
ma appunto dovrebbe risparmiarti tutte quelle rogne nel gestire il 
grafo e/r.
(relazioni, modifiche ecc)
Ad esempio, in sintesi, EOF si compone di due stadi principali:
Control layer con multipli objectstore (si chiamano editing context) in 
varie configurazioni: nidificati e paralleli.
Questi contengono gli oggetti 'finiti' del grafo mappato, gestiscono 
l'undo e tengono traccia dei cambiamenti.
Fanno capo ad un coordinatore che si occupa di smistare le richieste 
alla access layer sottostante. (nel caso di piu' modelli con anche 
relazioni tra piu' db differenti)
Access layer per la comunicazione con i db, gestione delle connessioni, 
cache per transazione e cache globale.
Le cache contengono i dati grezzi organizzati in hashmap.
Cayenne e' abbastanza simile come concetti (ma con profonde differenze) 
in quanto gli sviluppatori provengono da quella scuola.
Ha una struttura per gestire le query completamente differente e fino 
alla pre 1.2 con molte limitazioni, traccia dei cambiamenti migliore di 
EOF, ecc.
Ha un cache locale per jvm e puo' essere configurato per gestire una 
cache comune a diverse jvm.
Ci sono opzioni per 'ottimizzare' le query quali prefetching degli 
oggeti, query paginate, query raw. (nel senso che ritorna le hashmap 
create nella access layer nel caso si manipolino molti oggetti privi di 
relazioni)
Hibernate non so che strategie adotti, so solo che utilizza lucene per 
il mapping di ebj3... e che non dovrebbe supportare le raw query.
Come puoi vedere i dati sono ridondati in diverse cache per minimizzare 
l'accesso al db, ma un uso sconsiderato puo' portare a consumi di ram 
elevati.
Ciao
Mirko

Ma sei un guru dell'argomento! ;) Ti ringrazio moltissimo per il tuo parere.
Sincermante la mia formzazione in questo senso parte dalla lettura di 
libro di Martin Fowler "Design Pattern for Enterprise Application" ... 
ma non mi sono ancora addentrato nell'utilizzo di strutture complesse ...
Tirando le somme, credo almeno per la prima versione (quella 
dimostrativa) ri-utilizzaro' le strutture che sono già in mio possesso 
cercando di studiare melgio hibernate nei ritagli di tempo magari con 
degli esempi piu' concreti.
Rimango ancora un po' perplesso dopo la tua affermazione in merito alla 
"pesantezza" di hidernate... In un progetto di tipo enterprise che devi 
girare su un server ... sai farmi una stima della potenza di calcolo 
necessaria?
-- 
Mess
http://www.mibmagazine.it
