javax.persistence.spi.PersistenceUnitInfo Maven / Gradle / Ivy
The newest version!
/*
* 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 EntityManagerFactory.
*/
public interface PersistenceUnitInfo {
/**
* @return The name of the persistence unit. Corresponds to the
* element in the persistence.xml file.
*/
public String getPersistenceUnitName();
/**
* @return The fully qualified name of the persistence provider
* implementation class. Corresponds to the element in
* the persistence.xml file.
*/
public String getPersistenceProviderClassName();
/**
* @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();
/**
* @return the JTA-enabled data source to be used by the persistence
* provider. The data source corresponds to the
* element in the persistence.xml file or is provided at deployment
* or by the container.
*/
public DataSource getJtaDataSource();
/**
* @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 element in
* the persistence.xml file or provided at deployment or by the
* container.
*/
public DataSource getNonJtaDataSource();
/**
* @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
* element in the persistence.xml file.
*/
public List getMappingFileNames();
/**
* @return The list of JAR file URLs that the persistence provider must
* examine for managed classes of the persistence unit. Each jar
* file URL corresponds to a named element in the
* persistence.xml file.
*/
public List getJarFileUrls();
/**
* @return The URL for the jar file 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.
*/
public URL getPersistenceUnitRootUrl();
/**
* @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 element in the persistence.xml
* file.
*/
public List getManagedClassNames();
/**
* @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
* element in the persistence.xml file.
*/
public boolean excludeUnlistedClasses();
/**
* @return Properties object. Each property corresponds to a
* element in the persistence.xml file
*/
public Properties getProperties();
/**
* @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 PersistenceInfo.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 PersistenceInfo.getClassLoader. None of the classes loaded by
* this class loader will be visible to application components. The
* container does not use or maintain references to this class loader after
* returning it to the provider.
*
* @return Temporary ClassLoader with same visibility as current loader
*/
public ClassLoader getNewTempClassLoader();
}