package com.metrink.croquet.hibernate; import javax.annotation.Nullable; import javax.persistence.Persistence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.google.inject.Singleton; import com.google.inject.name.Named; import com.metrink.croquet.WicketSettings; /** * A PersistService that uses an EntityManager factory from a persistence.xml file. */ @Singleton class JpaPersistService extends CroquetPersistService { private static final Logger LOG = LoggerFactory.getLogger(JpaPersistService.class); /** * Constructor. * @param wicketSettings the settings from Croquet. * @param persistenceUnitName the name of the persistence unit. */ @Inject public JpaPersistService(final WicketSettings wicketSettings, @Nullable @Named("jpa-unit-name") final String persistenceUnitName) { super(wicketSettings, persistenceUnitName, null); } @Override public synchronized void start() { if(null != getEntityManagerFactory()) { throw new IllegalStateException("Persistence service was already initialized."); } LOG.debug("Starting JpaPersistenceService using {}", getPersistenceUnitName()); this.setEntityManagerFactory(Persistence.createEntityManagerFactory(getPersistenceUnitName())); } }