<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>PersistenceUnitInfo</title>
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="PersistenceUnitInfo";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/persistence/spi/PersistenceProviderResolverHolder.html" title="class in jakarta.persistence.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/persistence/spi/PersistenceUnitTransactionType.html" title="enum in jakarta.persistence.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/persistence/spi/PersistenceUnitInfo.html" target="_top">Frames</a></li>
<li><a href="PersistenceUnitInfo.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.persistence.spi</div>
<h2 title="Interface PersistenceUnitInfo" class="title">Interface PersistenceUnitInfo</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">PersistenceUnitInfo</span></pre>
<div class="block">Interface implemented by the container and used by the
 persistence provider when creating an <a href="../../../jakarta/persistence/EntityManagerFactory.html" title="interface in jakarta.persistence"><code>EntityManagerFactory</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#addTransformer-jakarta.persistence.spi.ClassTransformer-">addTransformer</a></span>(<a href="../../../jakarta/persistence/spi/ClassTransformer.html" title="interface in jakarta.persistence.spi">ClassTransformer</a>&nbsp;transformer)</code>
<div class="block">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
 <a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getClassLoader--"><code>getClassLoader()</code></a> method.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#excludeUnlistedClasses--">excludeUnlistedClasses</a></span>()</code>
<div class="block">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.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.ClassLoader</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getClassLoader--">getClassLoader</a></span>()</code>
<div class="block">Returns ClassLoader that the provider may use to load any
 classes, resources, or open URLs.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;java.net.URL&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getJarFileUrls--">getJarFileUrls</a></span>()</code>
<div class="block">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.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>javax.sql.DataSource</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getJtaDataSource--">getJtaDataSource</a></span>()</code>
<div class="block">Returns the JTA-enabled data source to be used by the
 persistence provider.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getManagedClassNames--">getManagedClassNames</a></span>()</code>
<div class="block">Returns the list of the names of the classes that the
 persistence provider must add to its set of managed
 classes.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.util.List&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getMappingFileNames--">getMappingFileNames</a></span>()</code>
<div class="block">Returns the list of the names of the mapping files that the
 persistence provider must load to determine the mappings for
 the entity classes.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.lang.ClassLoader</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getNewTempClassLoader--">getNewTempClassLoader</a></span>()</code>
<div class="block">Return a new instance of a ClassLoader that the provider may
 use to temporarily load any classes, resources, or open
 URLs.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>javax.sql.DataSource</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getNonJtaDataSource--">getNonJtaDataSource</a></span>()</code>
<div class="block">Returns the non-JTA-enabled data source to be used by the
 persistence provider for accessing data outside a JTA
 transaction.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getPersistenceProviderClassName--">getPersistenceProviderClassName</a></span>()</code>
<div class="block">Returns the fully qualified name of the persistence provider
 implementation class.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getPersistenceUnitName--">getPersistenceUnitName</a></span>()</code>
<div class="block">Returns the name of the persistence unit.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.net.URL</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getPersistenceUnitRootUrl--">getPersistenceUnitRootUrl</a></span>()</code>
<div class="block">Returns the URL for the jar file or directory that is the
 root of the persistence unit.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getPersistenceXMLSchemaVersion--">getPersistenceXMLSchemaVersion</a></span>()</code>
<div class="block">Returns the schema version of the <code>persistence.xml</code> file.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>java.util.Properties</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getProperties--">getProperties</a></span>()</code>
<div class="block">Returns a properties object.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../jakarta/persistence/SharedCacheMode.html" title="enum in jakarta.persistence">SharedCacheMode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getSharedCacheMode--">getSharedCacheMode</a></span>()</code>
<div class="block">Returns the specification of how the provider must use
 a second-level cache for the persistence unit.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../jakarta/persistence/spi/PersistenceUnitTransactionType.html" title="enum in jakarta.persistence.spi">PersistenceUnitTransactionType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getTransactionType--">getTransactionType</a></span>()</code>
<div class="block">Returns the transaction type of the entity managers created by
 the <code>EntityManagerFactory</code>.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../jakarta/persistence/ValidationMode.html" title="enum in jakarta.persistence">ValidationMode</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getValidationMode--">getValidationMode</a></span>()</code>
<div class="block">Returns the validation mode to be used by the persistence
 provider for the persistence unit.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getPersistenceUnitName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPersistenceUnitName</h4>
<pre>java.lang.String&nbsp;getPersistenceUnitName()</pre>
<div class="block">Returns the name of the persistence unit. Corresponds to the
 <code>name</code> attribute in the <code>persistence.xml</code> file.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the name of the persistence unit</dd>
</dl>
</li>
</ul>
<a name="getPersistenceProviderClassName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPersistenceProviderClassName</h4>
<pre>java.lang.String&nbsp;getPersistenceProviderClassName()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the fully qualified name of the persistence provider 
 implementation class</dd>
</dl>
</li>
</ul>
<a name="getTransactionType--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTransactionType</h4>
<pre><a href="../../../jakarta/persistence/spi/PersistenceUnitTransactionType.html" title="enum in jakarta.persistence.spi">PersistenceUnitTransactionType</a>&nbsp;getTransactionType()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>transaction type of the entity managers created
 by the EntityManagerFactory</dd>
</dl>
</li>
</ul>
<a name="getJtaDataSource--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJtaDataSource</h4>
<pre>javax.sql.DataSource&nbsp;getJtaDataSource()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the JTA-enabled data source to be used by the 
 persistence provider</dd>
</dl>
</li>
</ul>
<a name="getNonJtaDataSource--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNonJtaDataSource</h4>
<pre>javax.sql.DataSource&nbsp;getNonJtaDataSource()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the non-JTA-enabled data source to be used by the 
 persistence provider for accessing data outside a JTA 
 transaction</dd>
</dl>
</li>
</ul>
<a name="getMappingFileNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMappingFileNames</h4>
<pre>java.util.List&lt;java.lang.String&gt;&nbsp;getMappingFileNames()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of mapping file names that the persistence
 provider must load to determine the mappings for the entity
 classes</dd>
</dl>
</li>
</ul>
<a name="getJarFileUrls--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getJarFileUrls</h4>
<pre>java.util.List&lt;java.net.URL&gt;&nbsp;getJarFileUrls()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a list of URL objects referring to jar files or
 directories</dd>
</dl>
</li>
</ul>
<a name="getPersistenceUnitRootUrl--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPersistenceUnitRootUrl</h4>
<pre>java.net.URL&nbsp;getPersistenceUnitRootUrl()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a URL referring to a jar file or directory</dd>
</dl>
</li>
</ul>
<a name="getManagedClassNames--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getManagedClassNames</h4>
<pre>java.util.List&lt;java.lang.String&gt;&nbsp;getManagedClassNames()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of the names of the classes that the 
 persistence provider must add to its set of managed 
 classes</dd>
</dl>
</li>
</ul>
<a name="excludeUnlistedClasses--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>excludeUnlistedClasses</h4>
<pre>boolean&nbsp;excludeUnlistedClasses()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>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</dd>
</dl>
</li>
</ul>
<a name="getSharedCacheMode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSharedCacheMode</h4>
<pre><a href="../../../jakarta/persistence/SharedCacheMode.html" title="enum in jakarta.persistence">SharedCacheMode</a>&nbsp;getSharedCacheMode()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the second-level cache mode that must be used by the
 provider for the persistence unit</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
</dl>
</li>
</ul>
<a name="getValidationMode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getValidationMode</h4>
<pre><a href="../../../jakarta/persistence/ValidationMode.html" title="enum in jakarta.persistence">ValidationMode</a>&nbsp;getValidationMode()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the validation mode to be used by the 
 persistence provider for the persistence unit</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
</dl>
</li>
</ul>
<a name="getProperties--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProperties</h4>
<pre>java.util.Properties&nbsp;getProperties()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Properties object</dd>
</dl>
</li>
</ul>
<a name="getPersistenceXMLSchemaVersion--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPersistenceXMLSchemaVersion</h4>
<pre>java.lang.String&nbsp;getPersistenceXMLSchemaVersion()</pre>
<div class="block">Returns the schema version of the <code>persistence.xml</code> file.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>persistence.xml schema version</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
</dl>
</li>
</ul>
<a name="getClassLoader--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getClassLoader</h4>
<pre>java.lang.ClassLoader&nbsp;getClassLoader()</pre>
<div class="block">Returns ClassLoader that the provider may use to load any
 classes, resources, or open URLs.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>ClassLoader that the provider may use to load any 
 classes, resources, or open URLs</dd>
</dl>
</li>
</ul>
<a name="addTransformer-jakarta.persistence.spi.ClassTransformer-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addTransformer</h4>
<pre>void&nbsp;addTransformer(<a href="../../../jakarta/persistence/spi/ClassTransformer.html" title="interface in jakarta.persistence.spi">ClassTransformer</a>&nbsp;transformer)</pre>
<div class="block">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
 <a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getClassLoader--"><code>getClassLoader()</code></a> method. The transformer 
 has no effect on the result returned by the
 <a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getNewTempClassLoader--"><code>getNewTempClassLoader()</code></a> method.
 Classes are only transformed once within the same classloading
 scope, regardless of how many persistence units they may be 
 a part of.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>transformer</code> - provider-supplied transformer that the
 container invokes at class-(re)definition time</dd>
</dl>
</li>
</ul>
<a name="getNewTempClassLoader--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getNewTempClassLoader</h4>
<pre>java.lang.ClassLoader&nbsp;getNewTempClassLoader()</pre>
<div class="block">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 <a href="../../../jakarta/persistence/spi/PersistenceUnitInfo.html#getClassLoader--"><code>getClassLoader()</code></a>. 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 <a href="../../../jakarta/persistence/spi/PersistenceProvider.html#createContainerEntityManagerFactory-jakarta.persistence.spi.PersistenceUnitInfo-java.util.Map-"><code>PersistenceProvider.createContainerEntityManagerFactory(jakarta.persistence.spi.PersistenceUnitInfo, java.util.Map)</code></a> call.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>temporary ClassLoader with same visibility as current
 loader</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../jakarta/persistence/spi/PersistenceProviderResolverHolder.html" title="class in jakarta.persistence.spi"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../jakarta/persistence/spi/PersistenceUnitTransactionType.html" title="enum in jakarta.persistence.spi"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?jakarta/persistence/spi/PersistenceUnitInfo.html" target="_top">Frames</a></li>
<li><a href="PersistenceUnitInfo.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
