/** * */ package com.cwa.nagrand.timer; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import com.cwa.nagrand.db.DBSessionManager; import com.cwa.nagrand.db.arena.ArenaDAO; import com.cwa.nagrand.log.Log; import com.cwa.nagrand.memory.Arena; import com.cwa.nagrand.memory.ArenaManager; /** * @author zero * */ public class LazySaving extends QuartzJobBean { private static boolean isStart = false; @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { if (isStart) return; isStart = true; Log.debug("saving start."); doLogic(); isStart = false; } private void doLogic() { Map<String, Arena> allArena = ArenaManager.INSTANCE.getAllArena(); SqlSession session = DBSessionManager.INSTANCE.getSession(); ArenaDAO dao = session.getMapper(ArenaDAO.class); for (Arena arena : allArena.values()) { try { dao.update(arena); session.commit(); } catch (Exception e) { session.rollback(); e.printStackTrace(); } } session.close(); Log.fatal("saving arena:" + allArena.size()); } }