Newsgroup: it.comp.java
Titolo: Framework applicazioni con tabelle di catalogo

Salve a tutti.
 
Sto sviluppando una applicazione che utilizza un Database Relazionale e vorrei un parere su un eventuale framework da utilizzare.
 
Ci sono 2 tipologie di tabelle nel DB:
 
1.       Tabelle di catalogo (Struttura fissa – es: Tipo Documento, Attributo, Tipo Attributo, Utente… )
2.       Tabelle Dati (Struttura tabella variabile, numero colonne variabili: costruite automaticamente  a partire dai dati immessi nelle tabelle di catalogo)
 
Per esempio ho, tra le altre, le due tabelle di catalogo
 
- Tipo Documento (IDTipoDoc, DESCR)
- Attributo (IDTipoDoc, ID, DESCR, TIPOAttibuto)
 
Quando inserisco un nuovo record nella tabella di catalogo “Tipo Documento” 
 
(IDTipoDoc=1, DESCR=’FATTURE’) 
 
viene creata una nuova tabella dati “TAB01_FATTURE”,   e quando inserisco un nuovo record nella tabella “Attributo” 
 
(IDTipoDoc=1, ID=1, DESCR=”Cliente”, TIPOAttibuto=”STRING”)
 
viene creata una nuova colonna nella tabella “TAB01_FATTURE” 
 
In questo modo posso costruire una applicazione amministrativa con cui definire tutti i metadati e la struttura delle “tabelle dati”, e poi popolare le tabelle dati e visualizzarle sotto forma di un componente grafico tabellare su cui fare ricerche, impostare filtri ecc...
 
Ho tre domande:
 
1) Esiste un framework (java) che faciliti lo sviluppo di questa tipologia di applicazioni metadata/catalogo vs. dati? Ad esempio che consenta di dire quali sono le tabelle di catalogo, quali devono essere le relazioni tra di esse e come generare le tabelle dti a partire da queste?
 
2) Per la navigazione e la ricerca/inserimento sulle tabelle dati pensavo di utilizzare un componente tipo il datatable di JSF. Vorrei però che questo componente grafico permetta di utilizzare una tabella non mappata con un ORM (Hibernate, JPA...) e quindi che abbia le seguenti funzionalità:
 
- Visualizzazione in formato tabulare
- Paginazione
- Ordinamento su colonne
- Impostazioni di filtri direttamente sulle colonne
- Creazione automatica di un form di ricerca/inserimenti/update
 
Esiste un componente con queste caratteristiche, per cui si possa specificare a runtime su quale tabella del DB si vuole lavorare?
 
3) Ho visto molti componenti grafici in diversi linguaggi e librerie(JSF, GWT, ZF, Javascript) che offrono tutte le funzionalità sopra elencate per una tabella mappata con JPA/Hibernate. 
E’ possibile effettuare ad esempio la mappatura di una tabella del DB creata durante l’esecuzione dell’applicazione (nel mio caso con dei trigger sugli inserimenti nelle tabelle di catalogo) su JPA a runtime in modo da potere utilizzare dette funzionalità?
 
Mi sembra di avere letto che una cosa del genere potrebbe essere fattibile con librerie come CGLIB, JAVASSIST, ASM.
 
Potete confermarmi questa cosa ed eventualmente linkarmi quelche esempio se lo conoscete?
 
Grazie, Daniele

 Mi sembra di avere letto che una cosa del genere potrebbe essere fattibile con librerie come CGLIB, JAVASSIST, ASM.
 
lascerei perdere questa strada e lascerei perdere l'orm che a mio avviso
non ha alcun senso. se la struttura del database non è conosciuta a
compile time tanto vale che usi la mappatura delle tabelle tramite mappe
generiche. i framework di front-end in linea generale le supportano e tu non ti 
devi avventurare in una strada, quella di generare classi entity a runtime, 
che ammesso e non concesso sia fattibile (a naso ti direi di no) non hai 
idea di quante rogne si porta dietro.