Estoy usando Struts 2 e Hibernate. Tengo una tabla simple con un campo de Fecha que almacena información sobre cuándo tuvo lugar una determinada acción. Este valor de fecha se muestra en mi jsp. El problema que tengo es que después de que el hibernate actualiza el db, la página jsp no actualiza el valor de la fecha. Como un ejemplo de trabajo:¿Almacenamiento en caché de Hibernate?
date1 = 22/06/11 15:00:00
date2 = 22/06/11 16:00:00
Cuando actualizar manualmente (F5), entonces está bien - el valor cambia la fecha de date1
a date2
(es decir 15:00-16:00). Pero si continúo actualizando, entonces el jsp mostrará una vez date1 y next time date2, y así sucesivamente. Tengo el siguiente en mi hibernate.cfg:
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.use_query_cache">false</property>
Experimenté con desalojar de Hibernate(), flush(). He intentado añadir un scriptlet (sí, lo sé - scriptles son una mala práctica):
<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
estoy un poco atascado aquí - cualquier ayuda apreciada.
Gracias, Damo
EDIT: que tienen una clase DaoEngine, que se extienden a todos mis DAOs.
public class DaoEngine
{
@SuppressWarnings("unchecked")
private static final ThreadLocal session = new ThreadLocal();
private static final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
protected DaoEngine()
{
}
@SuppressWarnings("unchecked")
public static Session getSession()
{
Session hibSession = (Session) DaoEngine.session.get();
if (hibSession == null)
{
hibSession = sessionFactory.openSession();
DaoEngine.session.set(hibSession);
}
return hibSession;
}
protected void begin()
{
getSession().beginTransaction();
}
protected void commit()
{
getSession().getTransaction().commit();
}
@SuppressWarnings("unchecked")
protected void rollback()
{
try
{
getSession().getTransaction().rollback();
}
catch (HibernateException e)
{
}
try
{
getSession().close();
}
catch (HibernateException e)
{
}
DaoEngine.session.set(null);
}
@SuppressWarnings("unchecked")
public static void close()
{
getSession().close();
DaoEngine.session.set(null);
}
public void clearAll()
{
getSession().clear();
}
}
¿Qué mecanismo está utilizando para administrar y limpiar sus sesiones de Hibernate (o administradores de entidades JPA)? –