javax.persistence.spi.PersistenceUnitInfo Maven / Gradle / Ivy
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, 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/CDDL+GPL.html
* or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
* Sun designates this particular file as subject to the "Classpath" exception
* as provided by Sun in the GPL Version 2 section of the License file that
* accompanied this code. If applicable, add the following below the License
* Header, with the fields enclosed by brackets [] replaced by your own
* identifying information: "Portions Copyrighted [year]
* [name of copyright owner]"
*
* Contributor(s):
*
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
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();
}