/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.object; /** * SimpleSessionContext provides thread bound Session access * * @author tiwe * @version $Id$ */ public class SimpleSessionContext implements SessionContext { private final ThreadLocal<Session> sessionHolder = new ThreadLocal<Session>(); private final SessionFactory sessionFactory; public SimpleSessionContext(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Override public Session getCurrentSession() { return sessionHolder.get(); } public Session getOrCreateSession() { if (sessionHolder.get() == null) { Session session = sessionFactory.openSession(); sessionHolder.set(session); return session; } else { return sessionHolder.get(); } } public void releaseSession() { sessionHolder.remove(); } }