Qual è il modo migliore per serializzare un'istanza del modello EMF?
-
20-08-2019 - |
Domanda
Ho un'applicazione Eclipse RCP con un'istanza di un modello EMF popolata in memoria. Qual è il modo migliore per archiviare quel modello per l'accesso ai sistemi esterni? L'accesso può avvenire durante e dopo il runtime.
Le letture e le scritture del modello sono piuttosto bilanciate e possono verificarsi più volte al secondo.
Penso che un database popolato usando Hibernate + Teneo + EMF funzionerebbe bene, ma voglio sapere quali altre opzioni sono disponibili.
Soluzione
Sto usando CDO (Connected Data Objects) insieme a EMF per fare qualcosa di simile. Se usi gli esempi nel wiki di Eclipse, non ci vuole troppo tempo per farlo funzionare. Un paio di avvertenze:
-
Per i dati che cambiano spesso, probabilmente vorrai usare la modalità nonAudit per la tua persistenza. Altrimenti, salverai una nuova versione del tuo EObject con ogni commit, mantenendo anche quelli vecchi.
-
Puoi scegliere di impegnarti ogni volta che i tuoi dati cambiano, oppure puoi scegliere di impegnarti a intervalli meno frequenti, a seconda della frequenza con cui devi pubblicare i tuoi aggiornamenti.
-
Hai anche opzioni di blocco abbastanza flessibili se scegli di farlo.
La mia applicazione utilizza Derby per la persistenza, anche se verrà migrata a SQL Server in breve tempo.
C'è un webinar di 1 ora su Eclipse Live ( http://live.eclipse.org/node/ 635 ) che introduce il CDO e fornisce alcuni buoni esempi del suo utilizzo.
Altri suggerimenti
Andrei con Teneo a fare il sollevamento pesante a meno che le prestazioni non siano un vero problema (cosa che non sarà se i tuoi modelli non sono vasti). Anche se è lento puoi sintonizzarlo usando le annotazioni JPA.