我正在使用Struts 2和Hibernate。我有一個帶有日期字段的簡單表格,用於存儲有關某個操作何時發生的信息。此日期值顯示在我的jsp中。 我遇到的問題是,休眠更新數據庫後,jsp頁面不會更新日期值。作爲一個工作示例:Hibernate緩存?
date1 = 22/06/11 15:00:00
date2 = 22/06/11 16:00:00
當我手動(F5)刷新那麼它的確定 - 日期值的變化從date1
到date2
(即從15:00至16:00)。但是如果我保持清爽,那麼jsp將會顯示date1和next time date2等等。 我在hibernate.cfg如下:
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.use_query_cache">false</property>
我嘗試用Hibernate的逐出(),刷新()。我嘗試添加一個小腳本(是的,我知道 - 小腳本是不好的做法):
<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
我有點困在這裏 - 任何幫助表示讚賞。
感謝, 達摩
編輯: 我有一個DaoEngine類,我所有的DAO延伸。
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();
}
}
您使用什麼機制來管理和清理Hibernate會話(或JPA實體管理器)? –