2010-10-25 11 views
9

Sto cercando librerie temporali per Java, ovvero librerie che consentono di archiviare più versioni storiche dello stesso concetto. Sto cercando una libreria che ha un'API per fare qualcosa di simile:Librerie temporali per Java

Instant i1 = Instant.valueOf("2010-01-01"); 
Instant i2 = Instant.valueOf("2010-01-02"); 
Attribute<String> a = .... 
a.setValue(i1, "String as of 2010-01-01"); 
a.setValue(i2, "String as of 2010-01-02"); 

Potete trovare una discussione su questioni temporali sulla libreria nice articles by Martin Fowler

Uno che ho trovato è JTemporal, che sembra abbastanza buono per me, ma non è completo e manca il supporto per la persistenza Hibernate. Vorrei anche il supporto per i set temporali, ovvero i set definiti in un punto esatto nel tempo. JTemporal lo fa, ma il persistere del TemporalSet non è facile.

+0

non è possibile farlo con una 'Mappa'? – Bozho

+0

Questo è ciò che fa JTemporal, ma il supporto temporale è molto di più, come la fusione di periodi adiacenti con lo stesso valore e molto altro. La mappa, tuttavia, è per un singolo attributo temporale, ma la gestione di set temporali è più difficile – cdarwin

risposta

4

Dai un'occhiata allo DaoFusion quadro che funge da quadro bitemporale con stretta integrazione in Hibernate. Dovrebbe essere esattamente quello che stai cercando.

Citato dal sito web collegato:

modello bitemporale offre un modo elegante e sofisticato di trattare con maggior parte dei problemi temporali. L'implementazione del pattern bitemporale offerto da DAO Fusion si basa su uno bitemporal framework creato da Erwin Vervaet e Christophe Vanfleteren. Puoi saperne di più su questo quadro dalla loro presentazione Temporal Issues in a Rich Domain Model.

+0

L'ho dimenticato, ma l'ho già esaminato. Questo è un buon codice, ma, se correttamente ricordo, è molto simile a JTemporal, e usa lo stesso "trucco" che può essere usato con JTemporal per ottenere la persistenza di Hibernate: usa una raccolta uderlying che Hibernate conosce come hot to map. Non sono sicuro che sia l'approccio migliore con Hibernate e, inoltre, questo trucco non può essere utilizzato per archiviare JTemporal TemporalSet, che è una raccolta di collezioni – cdarwin

+0

Questo è il modo in cui funziona .. fornendo un elenco permanente a Hibernate e fornendo un oggetto bitemporale all'applicazione. – stefanglase

2

Vedere Deuce STM - Memoria transazionale del software Java.

+0

come è rilevante? – Bozho

+0

Basato sulla descrizione: "consente di memorizzare più versioni storiche dello stesso concetto" –

+0

+1 Bozho, questo ha poco a che fare con Fowler definito "oggetti temporali" – Toby