/* * Copyright 2009 NCHOVY * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.krakenapps.jpa; import javax.persistence.EntityManager; import org.krakenapps.jpa.handler.TransactionOption; /** * Provides entity manager service for declarative transaction support. * * @author xeraph * */ public interface ThreadLocalEntityManagerService { /** * Set an entity manager factory of current thread context * * @param factoryName * the alias for entity manager factory */ void setEntityManagerFactory(String factoryName, TransactionOption transactionMode); /** * Get the entity manager for current thread context * * @return an opened entity manager */ EntityManager getEntityManager(); /** * Begin transaction in current thread context */ void beginTransaction(); /** * Begin transaction in current thread context, but throw exception if * transaction is already active. * * @param failOnActiveTransaction * true if you want to stop when transaction is already active */ void beginTransaction(boolean failOnActiveTransaction); /** * Commit transaction in current thread context */ void commitTransaction(); /** * Rollback transaction in current thread context */ void rollbackTransaction(); /** * Set rollback only in current thread context */ void setRollbackOnlyTransaction(); /** * Close entity manager in current thread context */ void closeEntityManager(); }