teichmann@5844: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5844: * Software engineering by Intevation GmbH teichmann@5844: * teichmann@5844: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5844: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5844: * documentation coming with Dive4Elements River for details. teichmann@5844: */ teichmann@5844: teichmann@5829: package org.dive4elements.river.backend; ingo@466: ingo@466: import org.apache.log4j.Logger; ingo@466: ingo@466: import org.hibernate.Session; ingo@466: import org.hibernate.SessionFactory; ingo@466: ingo@466: ingo@466: public class SessionHolder ingo@466: { sascha@3333: private static Logger log = ingo@466: Logger.getLogger(SessionHolder.class); ingo@466: ingo@466: public static final ThreadLocal HOLDER = ingo@466: new ThreadLocal() { sascha@3333: @Override ingo@466: protected Session initialValue() { ingo@466: return create(); ingo@466: } ingo@466: }; ingo@466: ingo@466: private SessionHolder() { ingo@466: } ingo@466: ingo@466: public synchronized static Session create() { sascha@3333: log.debug("create"); ingo@466: SessionFactory sessionFactory = ingo@466: SessionFactoryProvider.getSessionFactory(); ingo@466: return sessionFactory.openSession(); ingo@466: } ingo@466: ingo@466: public static Session acquire() { sascha@3333: log.debug("acquire"); ingo@466: Session session = create(); ingo@466: HOLDER.set(session); ingo@466: return session; ingo@466: } ingo@466: ingo@466: public static void release() { sascha@3333: log.debug("release"); ingo@466: HOLDER.remove(); ingo@466: } ingo@466: } ingo@466: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :