我想知道是否有休眠延遲其寫入數據庫的可能性。我有配置爲MySQL的休眠。我希望支持的情景是80%的讀取和20%的寫入。所以我不想優化我的寫入,我寧願讓客戶端等到數據庫被寫入,而不是稍後返回。我的測試目前有100個並行的客戶端,cpu有時會最大限度地運行。我需要這種刷新方法立即寫入數據庫,並僅在數據寫入時才返回。休眠延遲寫
在我的客戶端,我發送了一個寫請求,然後發送了一個讀請求,但是這個讀請求有時會返回null。我懷疑hibernate沒有立即寫入數據庫。
public final ThreadLocal session = new ThreadLocal();
public Session currentSession() {
Session s = (Session) session.get();
// Open a new Session, if this thread has none yet
if (s == null || !s.isOpen()) {
s = sessionFactory.openSession();
// Store it in the ThreadLocal variable
session.set(s);
}
return s;
}
public synchronized void flush(Object dataStore) throws DidNotSaveRequestSomeRandomError {
Transaction txD;
Session session;
session = currentSession();
txD = session.beginTransaction();
session.save(dataStore);
try {
txD.commit();
} catch (ConstraintViolationException e) {
e.printStackTrace();
throw new DidNotSaveRequestSomeRandomError(dataStore, feedbackManager);
} catch (TransactionException e) {
log.debug("txD state isActive" + txD.isActive() + " txD is participating" + txD.isParticipating());
log.debug(e);
} finally {
// session.flush();
txD = null;
session.close();
}
// mySession.clear();
}
花了我一些時間進行調試。 Mysql日誌非常棒。所以這些是我調試的結果。如果我 – Siddharth 2012-01-16 05:14:44