/******************************************************************************* | |
* Copyright (c) 2008 - 2014 Oracle Corporation. 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. | |
* | |
* Contributors: | |
* Linda DeMichiel - Java Persistence 2.1 | |
* Linda DeMichiel - Java Persistence 2.0 | |
* | |
******************************************************************************/ | |
package javax.persistence.spi; | |
import javax.sql.DataSource; | |
import java.util.List; | |
import java.util.Properties; | |
import java.net.URL; | |
import javax.persistence.SharedCacheMode; | |
import javax.persistence.ValidationMode; | |
/** | |
* Interface implemented by the container and used by the | |
* persistence provider when creating an {@link javax.persistence.EntityManagerFactory}. | |
* | |
* @since Java Persistence 1.0 | |
*/ | |
public interface PersistenceUnitInfo { | |
/** | |
* Returns the name of the persistence unit. Corresponds to the | |
* <code>name</code> attribute in the <code>persistence.xml</code> file. | |
* @return the name of the persistence unit | |
*/ | |
public String getPersistenceUnitName(); | |
/** | |
* Returns the fully qualified name of the persistence provider | |
* implementation class. Corresponds to the <code>provider</code> element in | |
* the <code>persistence.xml</code> file. | |
* @return the fully qualified name of the persistence provider | |
* implementation class | |
*/ | |
public String getPersistenceProviderClassName(); | |
/** | |
* Returns the transaction type of the entity managers created by | |
* the <code>EntityManagerFactory</code>. The transaction type corresponds to | |
* the <code>transaction-type</code> attribute in the <code>persistence.xml</code> file. | |
* @return transaction type of the entity managers created | |
* by the EntityManagerFactory | |
*/ | |
public PersistenceUnitTransactionType getTransactionType(); | |
/** | |
* Returns the JTA-enabled data source to be used by the | |
* persistence provider. The data source corresponds to the | |
* <code>jta-data-source</code> element in the <code>persistence.xml</code> file or is | |
* provided at deployment or by the container. | |
* @return the JTA-enabled data source to be used by the | |
* persistence provider | |
*/ | |
public DataSource getJtaDataSource(); | |
/** | |
* Returns the non-JTA-enabled data source to be used by the | |
* persistence provider for accessing data outside a JTA | |
* transaction. The data source corresponds to the named | |
* <code>non-jta-data-source</code> element in the <code>persistence.xml</code> file or | |
* provided at deployment or by the container. | |
* @return the non-JTA-enabled data source to be used by the | |
* persistence provider for accessing data outside a JTA | |
* transaction | |
*/ | |
public DataSource getNonJtaDataSource(); | |
/** | |
* Returns the list of the names of the mapping files that the | |
* persistence provider must load to determine the mappings for | |
* the entity classes. The mapping files must be in the standard | |
* XML mapping format, be uniquely named and be resource-loadable | |
* from the application classpath. Each mapping file name | |
* corresponds to a <code>mapping-file</code> element in the | |
* <code>persistence.xml</code> file. | |
* @return the list of mapping file names that the persistence | |
* provider must load to determine the mappings for the entity | |
* classes | |
*/ | |
public List<String> getMappingFileNames(); | |
/** | |
* Returns a list of URLs for the jar files or exploded jar | |
* file directories that the persistence provider must examine | |
* for managed classes of the persistence unit. Each URL | |
* corresponds to a <code>jar-file</code> element in the | |
* <code>persistence.xml</code> file. A URL will either be a | |
* file: URL referring to a jar file or referring to a directory | |
* that contains an exploded jar file, or some other URL from | |
* which an InputStream in jar format can be obtained. | |
* @return a list of URL objects referring to jar files or | |
* directories | |
*/ | |
public List<URL> getJarFileUrls(); | |
/** | |
* Returns the URL for the jar file or directory that is the | |
* root of the persistence unit. (If the persistence unit is | |
* rooted in the WEB-INF/classes directory, this will be the | |
* URL of that directory.) | |
* The URL will either be a file: URL referring to a jar file | |
* or referring to a directory that contains an exploded jar | |
* file, or some other URL from which an InputStream in jar | |
* format can be obtained. | |
* @return a URL referring to a jar file or directory | |
*/ | |
public URL getPersistenceUnitRootUrl(); | |
/** | |
* Returns the list of the names of the classes that the | |
* persistence provider must add to its set of managed | |
* classes. Each name corresponds to a named <code>class</code> element in the | |
* <code>persistence.xml</code> file. | |
* @return the list of the names of the classes that the | |
* persistence provider must add to its set of managed | |
* classes | |
*/ | |
public List<String> getManagedClassNames(); | |
/** | |
* Returns whether classes in the root of the persistence unit | |
* that have not been explicitly listed are to be included in the | |
* set of managed classes. This value corresponds to the | |
* <code>exclude-unlisted-classes</code> element in the <code>persistence.xml</code> file. | |
* @return whether classes in the root of the persistence | |
* unit that have not been explicitly listed are to be | |
* included in the set of managed classes | |
*/ | |
public boolean excludeUnlistedClasses(); | |
/** | |
* Returns the specification of how the provider must use | |
* a second-level cache for the persistence unit. | |
* The result of this method corresponds to the <code>shared-cache-mode</code> | |
* element in the <code>persistence.xml</code> file. | |
* @return the second-level cache mode that must be used by the | |
* provider for the persistence unit | |
* | |
* @since Java Persistence 2.0 | |
*/ | |
public SharedCacheMode getSharedCacheMode(); | |
/** | |
* Returns the validation mode to be used by the persistence | |
* provider for the persistence unit. The validation mode | |
* corresponds to the <code>validation-mode</code> element in the | |
* <code>persistence.xml</code> file. | |
* @return the validation mode to be used by the | |
* persistence provider for the persistence unit | |
* | |
* @since Java Persistence 2.0 | |
*/ | |
public ValidationMode getValidationMode(); | |
/** | |
* Returns a properties object. Each property corresponds to a | |
* <code>property</code> element in the <code>persistence.xml</code> file | |
* or to a property set by the container. | |
* @return Properties object | |
*/ | |
public Properties getProperties(); | |
/** | |
* Returns the schema version of the <code>persistence.xml</code> file. | |
* @return persistence.xml schema version | |
* | |
* @since Java Persistence 2.0 | |
*/ | |
public String getPersistenceXMLSchemaVersion(); | |
/** | |
* Returns ClassLoader that the provider may use to load any | |
* classes, resources, or open URLs. | |
* @return ClassLoader that the provider may use to load any | |
* classes, resources, or open URLs | |
*/ | |
public ClassLoader getClassLoader(); | |
/** | |
* Add a transformer supplied by the provider that will be | |
* called for every new class definition or class redefinition | |
* that gets loaded by the loader returned by the | |
* {@link PersistenceUnitInfo#getClassLoader} method. The transformer | |
* has no effect on the result returned by the | |
* {@link PersistenceUnitInfo#getNewTempClassLoader} method. | |
* Classes are only transformed once within the same classloading | |
* scope, regardless of how many persistence units they may be | |
* a part of. | |
* @param transformer provider-supplied transformer that the | |
* container invokes at class-(re)definition time | |
*/ | |
public void addTransformer(ClassTransformer transformer); | |
/** | |
* Return a new instance of a ClassLoader that the provider may | |
* use to temporarily load any classes, resources, or open | |
* URLs. The scope and classpath of this loader is exactly the | |
* same as that of the loader returned by {@link | |
* PersistenceUnitInfo#getClassLoader}. None of the classes loaded | |
* by this class loader will be visible to application | |
* components. The provider may only use this ClassLoader within | |
* the scope of the {@link | |
* PersistenceProvider#createContainerEntityManagerFactory} call. | |
* @return temporary ClassLoader with same visibility as current | |
* loader | |
*/ | |
public ClassLoader getNewTempClassLoader(); | |
} |