blob: 87788ab0f076f0941d6f7401f31625fe289e93af [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2009 Oracle. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* The API for this class and its comments are derived from the JPA 2.0 specification
* which is developed under the Java Community Process (JSR 317) and is copyright
* Sun Microsystems, Inc.
*
* Contributors:
* dclarke - Java Persistence API 2.0 Public Draft
* Specification and licensing terms available from
* http://jcp.org/en/jsr/detail?id=317
*
* EARLY ACCESS - PUBLIC DRAFT
* This is an implementation of an early-draft specification developed under the
* Java Community Process (JCP) and is made available for testing and evaluation
* purposes only. The code is not compatible with any specification of the JCP.
******************************************************************************/
package javax.persistence;
import java.util.Map;
import java.util.Set;
/**
* The <code>EntityManagerFactory</code> interface is used to interact with the
* entity manager factory for a persistence unit.
* <p>
* When the application has finished using the entity manager factory, and/or at
* application shutdown, the application should close the entity manager
* factory. Once an <code>EntityManagerFactory</code> has been closed, all its
* entity managers are considered to be in the closed state.
*
* @since Java Persistence API 1.0
*/
public interface EntityManagerFactory {
/**
* Create a new EntityManager. This method returns a new EntityManager
* instance each time it is invoked. The isOpen method will return true on
* the returned instance.
*/
EntityManager createEntityManager();
/**
* Create a new EntityManager with the specified Map of properties. This
* method returns a new EntityManager instance each time it is invoked. The
* isOpen method will return true on the returned instance.
*/
EntityManager createEntityManager(Map map);
/**
* Return an instance of QueryBuilder for the creation of Criteria API
* QueryDefinition objects.
*
* @return QueryBuilder instance
* @throws IllegalStateException
* if the entity manager factory has been closed.
* @since Java Persistence API 2.0
*/
public QueryBuilder getQueryBuilder();
/**
* Close the factory, releasing any resources that it holds. After a factory
* instance is closed, all methods invoked on it will throw an
* IllegalStateException, except for isOpen, which will return false. Once
* an EntityManagerFactory has been closed, all its entity managers are
* considered to be in the closed state.
*/
void close();
/**
* Indicates whether or not this factory is open. Returns true until a call
* to close has been made.
*/
public boolean isOpen();
/**
* Get the properties and associated values that are in effect for the
* entity manager factory. Changing the contents of the map does not change
* the configuration in effect.
*
* @return properties
* @since Java Persistence API 2.0
*/
public Map getProperties();
/**
* Get the names of the properties that are supported for use with the
* entity manager factory. These correspond to properties that may be passed
* to the methods of the EntityManagerFactory interface that take a
* properties argument. These include all standard properties as well as
* vendor-specific properties supported by the provider. These properties
* may or may not currently be in effect.
*
* @return properties and hints
* @since Java Persistence API 2.0
*/
public Set<String> getSupportedProperties();
/**
* Access the cache that is associated with the entity manager factory(the
* "second level cache").
*
* @return instance of the Cache interface
* @throws IllegalStateException
* if the entity manager factory has been closed.
* @since Java Persistence API 2.0
*/
public Cache getCache();
}