2010-10-25 16 views
9

Estoy buscando bibliotecas temporales para Java, es decir, bibliotecas que permiten almacenar varias versiones históricas del mismo concepto. Busco una biblioteca que cuenta con una API para hacer algo como:Bibliotecas temporales para 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"); 

puede encontrar una discusión acerca de los problemas temporales en la biblioteca nice articles by Martin Fowler

Uno que he encontrado es JTemporal, lo que parece bastante bueno para mí, pero no está completo y carece de soporte para la persistencia de Hibernate. Me gustaría obtener soporte para conjuntos temporales también, es decir, conjuntos definidos en un punto exacto en el tiempo. JTemporal hace eso, pero persistir el TemporalSet no es fácil.

+0

¿no puedes hacer esto con un 'Mapa'? – Bozho

+0

Esto es lo que hace JTemporal, pero el soporte temporal es mucho más, como fusionar períodos adyacentes con el mismo valor y mucho más. El mapa, sin embargo, es de un único atributo temporal, pero el manejo de conjuntos temporales es más difícil – cdarwin

Respuesta

4

Eche un vistazo a DaoFusion marco que actúa como un marco bitemporal con estrecha integración en Hibernate. Debe ser exactamente lo que estás buscando.

citado de la página web enlazada:

patrón Bitemporal ofrece una manera elegante y sofisticada de hacer frente a la mayoría de las cuestiones temporales. La implementación del patrón bitemporal ofrecido por DAO Fusion se basa en un bitemporal framework creado por Erwin Vervaet y Christophe Vanfleteren. Puede obtener más información acerca de este marco desde su presentación Temporal Issues in a Rich Domain Model.

+0

Lo olvidé, pero ya lo examiné. Ese es un buen código, pero, si recuerdo correctamente, es muy similar a JTemporal, y usa el mismo "truco" que se puede usar con JTemporal para lograr la persistencia de Hibernate: utilice una colección uderlying que Hibernate sabe usar para mapear. No estoy seguro de que sea el mejor enfoque con Hibernate, y, además, este truco no se puede usar para almacenar JTemporal TemporalSet, que es una colección de colecciones – cdarwin

+0

Así funciona ... proporcionando una lista persistente para Hibernate y proporcionando un objeto bitemporal para la aplicación. – stefanglase

2

Mirar Deuce STM - Java Software Transactional Memory.

+0

¿cómo es eso relevante? – Bozho

+0

Según la descripción: "permitir almacenar varias versiones históricas del mismo concepto" –

+0

+1 Bozho, esto tiene poco que ver con los "objetos temporales" denominados de Fowler – Toby

Cuestiones relacionadas