javax.persistence.spi.PersistenceUnitInfo Maven / Gradle / Ivy
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the License). You may not use this file except in
* compliance with the License.
*
* You can obtain a copy of the license at
* https://glassfish.dev.java.net/public/CDDLv1.0.html or
* glassfish/bootstrap/legal/CDDLv1.0.txt.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* Header Notice in each file and include the License file
* at glassfish/bootstrap/legal/CDDLv1.0.txt.
* If applicable, add the following below the CDDL Header,
* with the fields enclosed by brackets [] replaced by
* you own identifying information:
* "Portions Copyrighted [year] [name of copyright owner]"
*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
*/
package javax.persistence.spi;
import javax.sql.DataSource;
import java.net.URL;
import java.util.List;
import java.util.Properties;
/**
* 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 name attribute
* in the persistence.xml file.
* @return The name of the persistence unit. Corresponds to the name attribute
* in the persistence.xml file.
*/
public String getPersistenceUnitName();
/**
* Returns the fully qualified name of the persistence provider
* implementation class. Corresponds to the <provider> element in
* the persistence.xml file.
* @return The fully qualified name of the persistence provider
* implementation class. Corresponds to the <provider> element in
* the persistence.xml file.
*/
public String getPersistenceProviderClassName();
/**
* Returns the transaction type of the entity managers created by the
* EntityManagerFactory. The transaction type corresponds to the
* transaction-type attribute in the persistence.xml file.
* @return The transaction type of the entity managers created by the
* EntityManagerFactory. The transaction type corresponds to the
* transaction-type attribute in the persistence.xml file.
*/
public PersistenceUnitTransactionType getTransactionType();
/**
* Returns the JTA-enabled data source to be used by the persistence
* provider. The data source corresponds to the <jta-data-source>
* element in the persistence.xml file or is provided at deployment
* or by the container.
* @return the JTA-enabled data source to be used by the persistence
* provider. The data source corresponds to the <jta-data-source>
* element in the persistence.xml file or is provided at deployment
* or by the container.
*/
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 <non-jta-data-source> element in
* the persistence.xml 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. The data
* source corresponds to the named <non-jta-data-source> element in
* the persistence.xml file or provided at deployment or by the
* container.
*/
public DataSource getNonJtaDataSource();
/**
* Returns the list of mapping file names 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. This list will not include the orm.xml file if one was
* specified. Each mapping file name corresponds to a <mapping-file>
* element in the persistence.xml file.
* @return The list of mapping file names 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. This list will not include the orm.xml file if one was
* specified. Each mapping file name corresponds to a <mapping-file>
* element in the persistence.xml file.
*/
public List 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 named element in the
* persistence.xml 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 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 it to its set of managed classes. Each name
* corresponds to a named <class> element in the persistence.xml
* file.
* @return The list of the names of the classes that the persistence
* provider must add it to its set of managed classes. Each name
* corresponds to a named <class> element in the persistence.xml
* file.
*/
public List 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 <exclude-unlisted-classes>
* element in the persistence.xml 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. This value corresponds to the <exclude-unlisted-classes>
* element in the persistence.xml file.
*/
public boolean excludeUnlistedClasses();
/**
* Returns properties object. Each property corresponds to a <property>
* element in the persistence.xml file
* @return Properties object. Each property corresponds to a <property>
* element in the persistence.xml file
*/
public Properties getProperties();
/**
* 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 A 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();
}