blob: c3f997dde23e070002a39efd41e5b30ef0d46d54 [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 2.0 - Proposed Final Draft (March 13, 2009)
* 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;
import javax.persistence.criteria.QueryBuilder;
import javax.persistence.metamodel.Metamodel;
/**
* Interface used to interact with the entity manager factory for the
* persistence unit.
*/
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.
*
* @throws IllegalStateException
* if the entity manager factory has been closed.
*/
public 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.
*
* @throws IllegalStateException
* if the entity manager factory has been closed.
*/
public EntityManager createEntityManager(Map map);
/**
* Return an instance of QueryBuilder for the creation of CriteriaQuery
* objects.
*
* @return QueryBuilder instance
* @throws IllegalStateException
* if the entity manager factory has been closed.
*/
public QueryBuilder getQueryBuilder();
/**
* Return an instance of Metamodel interface for access to the metamodel of
* the persistence unit.
*
* @return Metamodel instance
* @throws IllegalStateException
* if the entity manager factory has been closed.
*/
public Metamodel getMetamodel();
/**
* Indicates whether the factory is open. Returns true until the factory has
* been closed.
*/
public boolean isOpen();
/**
* 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.
*
* @throws IllegalStateException
* if the entity manager factory has been closed.
*/
public void close();
/**
* 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
*/
public Map<String, Object> 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
*/
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.
*/
public Cache getCache();
}