Stiamo costruendo un prodotto per il dominio degli acquisti in JAVA.
Di seguito sono riportati i principali requisiti tecnici.
- Platform Independent
- Indipendente dal database
- Indipendente dal browser
Nei requisiti funzionali il prodotto è di natura molto dinamica. Il motivo principale per cui il processo di approvvigionamento in tutto il mondo è diverso da cliente a cliente.
In breve, abbiamo bisogno di un motore di flusso di lavoro dinamico e un motore di template dinamico. Il motore del flusso di lavoro con cui possiamo definire qualsiasi tipo di flusso di lavoro e il motore di template ci consente di definire qualsiasi tipo di strutture dati e, in base alla definizione, può ottenere l'input dell'utente attraverso il flusso di lavoro.
Abbiamo sviluppato questo prodotto per quasi 2 anni. È passato molto tempo prima che possiamo scendere con la dinamica dei requisiti.
Fino ad ora abbiamo sviluppato un flusso di lavoro di base e un motore di template e che è in uso presso uno dei client.
Abbiamo utilizzato le seguenti tecnologie.
- GWT-Ext (Front End Framework)
- Ibernazione (livello database)
Nel frattempo abbiamo riscontrato alcuni problemi con GWT-Ext (principalmente compatibilità con i browser) e l'ottimizzazione del database a causa della sottoclassificazione in ibernazione.
Per risolvere il problema di GWT-Ext, che una comunità morente, abbiamo deciso di passare a SmartGWT. In SmartGWT abbiamo affrontato problemi legati al caricamento e ora siamo in grado di finalizzare che GWT 2.3 sarà la strada da percorrere in quanto la libreria è ricca e le prestazioni sono al top.
Siamo in grado di finalizzare quasi il front e il middle layer di GWT-Spring.
In ibernazione, abbiamo riscontrato problemi principali con la sottoclassing a causa del fatto che lanciava query astronomiche e talvolta smetteva di attivare qualsiasi query per 5-10 secondi o poteva essere di circa 30 secondi e quindi riprendere di nuovo. Pochi giorni fa sono arrivato a un articolo relativo a ORM.
Sono uno sviluppatore SQL tradizionale .Net e ho sempre lavorato con database relazionale. Leggendo questo articolo, l'ho trovato anche in relazione ai problemi che ho di fronte. Non sono ancora completamente convinto di utilizzare l'ibernazione e questo articolo ha appena supportato la mia opinione.
Di seguito sono riportate le domande per le quali sto cercando una risposta.
- Dovremmo andare con Hibernate in caso di requisiti di database dinamici e il carico dei dati sarà pesante in futuro? Come possiamo suddividere i dati, come possiamo unire efficacemente i dati, come possiamo ottimizzare le query? Se la risposta è no, come otteniamo l'indipendenza dal database?
- La nostra scelta è correlata a GWT e Spring o è necessario modificare anche questo?
- Dovremmo utilizzare qualsiasi altro database di coppie di valori chiave se i dati sono di natura dinamica ed è molto difficile renderli relazionali?