首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate session统一管理的配备

2012-11-07 
hibernate session统一管理的配置?public class FlushedOpenSessionInViewFilter extends OpenSessionInVi

hibernate session统一管理的配置

?

public class FlushedOpenSessionInViewFilter extends OpenSessionInViewFilter {protected void doFilterInternal(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {logger.debug("FIX ME!!!access FlushedOpenSessionInViewFilter");SessionFactory sessionFactory = lookupSessionFactory(request);Session session = null;boolean participate = false;if (isSingleSession()) {// single session modelogger.debug("FIX ME!!!Single Hibernate Session");if (TransactionSynchronizationManager.hasResource(sessionFactory)) {// Do not modify the Session: just set the participate flag.try {logger.debug("FIX ME!!!begin unbind sessionFactory");TransactionSynchronizationManager.unbindResource(sessionFactory);logger.debug("FIX ME!!!end unbind sessionFactory");if (TransactionSynchronizationManager.hasResource(lookupDataSource())){logger.debug("FIX ME!!!begin unbind DataSource");TransactionSynchronizationManager.unbindResource(lookupDataSource());logger.debug("FIX ME!!!end unbind DataSource");}logger.debug("FIX ME!!!begin close hibernate session");closeSession(session, sessionFactory);logger.debug("FIX ME!!!end close hibernate session");} catch (Exception e) {logger.error("FIX ME!!!unbind sessionFactory error",e);}}logger.debug("FIX ME!!!begin opening single Hibernate session");session = getSession(sessionFactory);logger.debug("FIX ME!!!end opening single Hibernate session");if (!TransactionSynchronizationManager.hasResource(sessionFactory)){logger.debug("FIX ME!!!begin binding session");TransactionSynchronizationManager.bindResource(sessionFactory,new SessionHolder(session));logger.debug("FIX ME!!!end binding session");}} else {// deferred close modelogger.debug("FIX ME!!!not single hibernate session");if (SessionFactoryUtils.isDeferredCloseActive(sessionFactory)) {// Do not modify deferred close: just set the participate flag.participate = true;} else {SessionFactoryUtils.initDeferredClose(sessionFactory);}}try {logger.debug("FIX ME!!!Now filter in FlushedOpenSessionInViewFilter");filterChain.doFilter(request, response);logger.debug("FIX ME!!!FlushedOpenSessionInViewFilter filter OK! ");} catch (Exception e) {logger.error("FIX ME!!!FlushedOpenSessionInViewFilter error",e);}finally {logger.debug("FIX ME!!!FlushedOpenSessionInViewFilter clean session ");if (!participate) {if (isSingleSession()) {// single session modetry {logger.debug("FIX ME!!!unbind sessionFactory in OpenSessionInViewFilter");TransactionSynchronizationManager.unbindResource(sessionFactory);/*if (TransactionSynchronizationManager.hasResource(lookupDataSource())){logger.debug("FIX ME!!!Unbind DataSource in OpenSessionInViewFilter");TransactionSynchronizationManager.unbindResource(lookupDataSource());}*/logger.debug("FIX ME!!!Closing single Hibernate session in OpenSessionInViewFilter");closeSession(session, sessionFactory);} catch (Exception e) {logger.debug("FIX ME!!!unbind sessionFactory error",e);}} else {// deferred close modeSessionFactoryUtils.processDeferredClose(sessionFactory);}}logger.debug("FIX ME!!!FlushedOpenSessionInViewFilter END ");}}protected void closeSession(Session arg0, SessionFactory arg1) {arg0.flush();super.closeSession(arg0, arg1);}protected DataSource lookupDataSource() {String dataSourceBeanName = "dataSource";WebApplicationContext wac =WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());return (DataSource) wac.getBean(dataSourceBeanName, DataSource.class);}}

?<filter>

<filter-name>hibernateFilter</filter-name><filter-class>cn.com.superv.netmessage.util.FlushedOpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>/dwr/*</url-pattern></filter-mapping>

热点排行