import org.hibernate.* class SessionFactoryWrapper { static final String REQUEST_SESSION_KEY = "__cfhibernate_sessionfactorywrapper_session__" SessionFactory sessionFactory String sessionKey def SessionFactoryWrapper(sessionFactory, engineId) { this.sessionFactory = sessionFactory this.sessionKey = REQUEST_SESSION_KEY + engineId } def getSessionForRequest(pageContext) { if (pageContext.request.getAttribute(sessionKey) == null) { pageContext.request.setAttribute(sessionKey, sessionFactory.openSession()) } pageContext.request.getAttribute(sessionKey) } def closeRequest(pageContext) { if (pageContext.request.getAttribute(sessionKey) != null) { pageContext.request.getAttribute(sessionKey).close() pageContext.request.removeAttribute(sessionKey) } } def close() { sessionFactory.close() sessionFactory = null } }