/* * Databinder: a simple bridge from Wicket to Hibernate * Copyright (C) 2006 Nathan Hamblen nathan@technically.us * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package net.databinder.jpa; import javax.persistence.EntityManager; import org.apache.wicket.Application; import org.apache.wicket.WicketRuntimeException; /** * Provides access to application-bound Hibernate session factories and current sessions. * This class will work with a * <a href="http://www.hibernate.org/hib_docs/v3/api/org/hibernate/context/ManagedSessionContext.html">ManagedSessionContext</a> * and DataRequestCycle listener when present, but neither is required so long as a * "current" session is available from the session factory supplied by the application. * @see JPAApplication * @author rhansen@kindleit.net */ public class Databinder { /** * @return default session factory, as returned by the application * @throws WicketRuntimeException if session factory can not be found * @see JPAApplication */ public static EntityManager getEntityManager() { return getEntityManager(null); } /** * @param context object, or null for the default factory * @return session factory, as returned by the application * @throws WicketRuntimeException if session factory can not be found * @see JPAApplication */ public static EntityManager getEntityManager(final String context) { final Application app = Application.get(); if (app instanceof JPAApplication) { return ((JPAApplication)app).getEntityManager(context); } throw new WicketRuntimeException("Please implement JPAApplication in your Application subclass."); } }