<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/jcache/1.0.0/javadoc/javax/cache/integration/CacheLoader.html" />
<!-- Generated by javadoc (version 1.7.0_25) on Fri Mar 28 13:34:25 EST 2014 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>CacheLoader (JSR107 API and SPI 1.0.0 API)</title>
<meta name="date" content="2014-03-28">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="CacheLoader (JSR107 API and SPI 1.0.0 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><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="class-use/CacheLoader.html">Use</a></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>Prev Class</li>
<li><a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/cache/integration/CacheLoader.html" target="_top">Frames</a></li>
<li><a href="CacheLoader.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All 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">javax.cache.integration</div>
<h2 title="Interface CacheLoader" class="title">Interface CacheLoader&lt;K,V&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>K</code> - the type of keys handled by this loader</dd><dd><code>V</code> - the type of values generated by this loader</dd></dl>
<hr>
<br>
<pre>public interface <span class="strong">CacheLoader&lt;K,V&gt;</span></pre>
<div class="block">Used when a cache is read-through or when loading data into a cache via the
 <a href="../../../javax/cache/Cache.html#loadAll(java.util.Set, boolean, javax.cache.integration.CompletionListener)"><code>Cache.loadAll(java.util.Set, boolean,
 CompletionListener)</code></a> method.</div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>1.0</dd>
<dt><span class="strong">Author:</span></dt>
  <dd>Greg Luck, Yannis Cosmadopoulos</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../javax/cache/configuration/CompleteConfiguration.html#isReadThrough()"><code>CompleteConfiguration.isReadThrough()</code></a>, 
<a href="../../../javax/cache/integration/CacheWriter.html" title="interface in javax.cache.integration"><code>CacheWriter</code></a></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="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">V</a></code></td>
<td class="colLast"><code><strong><a href="../../../javax/cache/integration/CacheLoader.html#load(K)">load</a></strong>(<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>&nbsp;key)</code>
<div class="block">Loads an object.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>,<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">V</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../javax/cache/integration/CacheLoader.html#loadAll(java.lang.Iterable)">loadAll</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;? extends <a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>&gt;&nbsp;keys)</code>
<div class="block">Loads multiple objects.</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="load(java.lang.Object)">
<!--   -->
</a><a name="load(K)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>load</h4>
<pre><a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">V</a>&nbsp;load(<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>&nbsp;key)
       throws <a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration">CacheLoaderException</a></pre>
<div class="block">Loads an object. Application developers should implement this
 method to customize the loading of a value for a cache entry. This method
 is called by a cache when a requested entry is not in the cache. If
 the object can't be loaded <code>null</code> should be returned.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>key</code> - the key identifying the object being loaded</dd>
<dt><span class="strong">Returns:</span></dt><dd>The value for the entry that is to be stored in the cache or
         <code>null</code> if the object can't be loaded</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration">CacheLoaderException</a></code> - if there is problem executing the loader.</dd></dl>
</li>
</ul>
<a name="loadAll(java.lang.Iterable)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>loadAll</h4>
<pre><a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>,<a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">V</a>&gt;&nbsp;loadAll(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;? extends <a href="../../../javax/cache/integration/CacheLoader.html" title="type parameter in CacheLoader">K</a>&gt;&nbsp;keys)
                 throws <a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration">CacheLoaderException</a></pre>
<div class="block">Loads multiple objects. Application developers should implement this
 method to customize the loading of cache entries. This method is called
 when the requested object is not in the cache. If an object can't be loaded,
 it is not returned in the resulting map.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>keys</code> - keys identifying the values to be loaded</dd>
<dt><span class="strong">Returns:</span></dt><dd>A map of key, values to be stored in the cache.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration">CacheLoaderException</a></code> - if there is problem executing the 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><a href="#skip-navbar_bottom" title="Skip navigation links"></a><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="class-use/CacheLoader.html">Use</a></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>Prev Class</li>
<li><a href="../../../javax/cache/integration/CacheLoaderException.html" title="class in javax.cache.integration"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/cache/integration/CacheLoader.html" target="_top">Frames</a></li>
<li><a href="CacheLoader.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All 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 ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014. All Rights Reserved.</small></p>
</body>
</html>
