发个我N年前收藏的《地球上出现过的CPU完全收藏》
2010-04-29 23:11
239 查看
Quartz定时器中打开与关闭hibernateSession,这样对hibernate2级缓存进行了优化,在打开的session中可以维护lazy加载,这样提升了hibernate在Quartz中的使用效率。废话不多说了,上代码:
所有Quartz类都继承TransactionalQuartzTask类实现executeTransactional虚方法。
本文出自 “正气大侠” 博客,请务必保留此出处http://zhengqidaxia.blog.51cto.com/3231279/1026929
package com.net263.boss.charge.action; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.orm.hibernate3.SessionFactoryUtils; import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.scheduling.quartz.QuartzJobBean; import org.springframework.transaction.support.TransactionSynchronizationManager; public abstract class TransactionalQuartzTask extends QuartzJobBean { private static Logger logger = Logger.getLogger(TransactionalQuartzTask.class); private SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } /** * Most of this method is copied from the HibernateInterceptor. */ protected final void executeInternal(JobExecutionContext ctx) throws JobExecutionException { Session session = SessionFactoryUtils.getSession(sessionFactory, true); boolean existingTransaction = SessionFactoryUtils .isSessionTransactional(session, getSessionFactory()); if (existingTransaction) { logger.info("Found thread-bound Session for TransactionalQuartzTask"); } else { TransactionSynchronizationManager.bindResource(getSessionFactory(), new SessionHolder(session)); } try { executeTransactional(ctx); } catch (HibernateException ex) { ex.printStackTrace(); throw ex; } finally { if (existingTransaction) { logger.debug("Not closing pre-bound Hibernate Session after TransactionalQuartzTask"); } else { TransactionSynchronizationManager .unbindResource(getSessionFactory()); SessionFactoryUtils .releaseSession(session, getSessionFactory()); } } } /** * Implementing classes, implement this method. */ protected abstract void executeTransactional(JobExecutionContext ctx) throws JobExecutionException; }
所有Quartz类都继承TransactionalQuartzTask类实现executeTransactional虚方法。
本文出自 “正气大侠” 博客,请务必保留此出处http://zhengqidaxia.blog.51cto.com/3231279/1026929
相关文章推荐
- 卅年史诗!地球上出现过的CPU完全收藏 - (29) 无法忽视它的存在——APPLE(苹果)电脑(组图)
- 卅年史诗!地球上出现过的CPU完全收藏 - (26-28) x86架构下的其它CPU巨鳄 Cyrix,NexGen,IDT/Transmeta(组图)
- 卅年史诗!地球上出现过的CPU完全收藏 - (20-25) 由无知到精通!详解CPU里遇到的“黑话”
- 卅年史诗!地球上出现过的CPU完全收藏 - (18-19) 正本清源!“从古至今”历数AMD处理器(组图)
- 卅年史诗!地球上出现过的CPU完全收藏 - (10-17) 空前强大经久不衰的系列CPU——Pentium系列
- 卅年史诗!地球上出现过的CPU完全收藏 - (6-9) 确立x86地位创造商业奇迹的CPU系列——80x86系列
- 卅年史诗!地球上出现过的CPU完全收藏 - (2-5) “桃园三结义”!Intel公司就这样成立了
- 卅年史诗!地球上出现过的CPU完全收藏 - (30) 回顾过去为的是成就未来 国货CPU也很有希望 【完】
- 卅年史诗!地球上出现过的CPU完全收藏 - (1) 引言 从1946年说起!填补我国教育上的空白 【开篇】
- 卅年史诗!地球上出现过的CPU完全收藏 【索引】
- 地球上出现过的CPU完全收藏.part4
- 卅年史诗!地球上出现过的CPU完全收藏
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法【转自wjr2012的csdn blog】
- Android中使用ScrollView内嵌ListView出现显示不完全问题
- 英特尔 CPU 惊天漏洞事件完全详解
- 双剑合璧:CPU+GPU异构计算完全解析
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE解决办法
- 为什么Cpu不能以100%运行 [不完全版]
- 完全没有基础的安装android studio及导入项目中出现的一些问题
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI