Import BSDDB 4.7.25 (as of svn r89086)
This commit is contained in:
220
docs/collections/tutorial/tuplekeybindings.html
Normal file
220
docs/collections/tutorial/tuplekeybindings.html
Normal file
@@ -0,0 +1,220 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>
|
||||
Creating Tuple Key Bindings
|
||||
</title>
|
||||
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.62.4" />
|
||||
<link rel="home" href="index.html" title="Berkeley DB Collections Tutorial" />
|
||||
<link rel="up" href="Tuple.html" title="Chapter 5. 		Using Tuples 	" />
|
||||
<link rel="previous" href="tupleswithkeycreators.html" title=" 		Using Tuples with Key Creators 	" />
|
||||
<link rel="next" href="tuple-serialentitybindings.html" title=" Creating Tuple-Serial Entity Bindings " />
|
||||
</head>
|
||||
<body>
|
||||
<div class="navheader">
|
||||
<table width="100%" summary="Navigation header">
|
||||
<tr>
|
||||
<th colspan="3" align="center">
|
||||
Creating Tuple Key Bindings
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="20%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
|
||||
<th width="60%" align="center">Chapter 5.
|
||||
Using Tuples
|
||||
</th>
|
||||
<td width="20%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="sect1" lang="en" xml:lang="en">
|
||||
<div class="titlepage">
|
||||
<div>
|
||||
<div>
|
||||
<h2 class="title" style="clear: both"><a id="tuplekeybindings"></a>
|
||||
Creating Tuple Key Bindings
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div></div>
|
||||
</div>
|
||||
<p>
|
||||
Serial bindings were used in prior examples as key bindings, and
|
||||
keys were stored as serialized objects. In this example, a tuple
|
||||
binding is used for each key since keys will be stored as tuples.
|
||||
Because keys are no longer stored as serialized objects, the
|
||||
<tt class="classname">PartKey</tt>, <tt class="classname">SupplierKey</tt> and <tt class="classname">ShipmentKey</tt> classes
|
||||
no longer implement the
|
||||
<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" target="_top">Serializable</a>
|
||||
|
||||
interface (this is the only change to these classes and is not
|
||||
shown below).
|
||||
</p>
|
||||
<p>
|
||||
For the <tt class="classname">Part</tt> key, <tt class="classname">Supplier</tt> key,
|
||||
and <tt class="classname">Shipment</tt> key, the
|
||||
<tt class="classname">SampleViews</tt> class was changed in this example to create a
|
||||
custom
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleBinding.html" target="_top">TupleBinding</a>
|
||||
|
||||
instead of a
|
||||
<a href="../../java/com/sleepycat/bind/serial/SerialBinding.html" target="_top">SerialBinding</a>.
|
||||
The custom tuple key binding classes are defined further below.
|
||||
</p>
|
||||
<a id="tuple_sampleviews"></a>
|
||||
<pre class="programlisting"><b class="userinput"><tt>import com.sleepycat.bind.tuple.TupleBinding;
|
||||
...</tt></b>
|
||||
public class SampleViews
|
||||
{
|
||||
...
|
||||
public SampleViews(SampleDatabase db)
|
||||
{
|
||||
...
|
||||
ClassCatalog catalog = db.getClassCatalog();
|
||||
<b class="userinput"><tt> EntryBinding partKeyBinding =
|
||||
new PartKeyBinding();
|
||||
EntityBinding partDataBinding =
|
||||
new PartBinding(catalog, PartData.class);
|
||||
EntryBinding supplierKeyBinding =
|
||||
new SupplierKeyBinding();
|
||||
EntityBinding supplierDataBinding =
|
||||
new SupplierBinding(catalog, SupplierData.class);
|
||||
EntryBinding shipmentKeyBinding =
|
||||
new ShipmentKeyBinding();
|
||||
EntityBinding shipmentDataBinding =
|
||||
new ShipmentBinding(catalog, ShipmentData.class);
|
||||
EntryBinding cityKeyBinding =
|
||||
TupleBinding.getPrimitiveBinding(String.class);</tt></b>
|
||||
...
|
||||
}
|
||||
} </pre>
|
||||
<p>
|
||||
For the City key, however, a custom binding class is not needed
|
||||
because the key class is a primitive Java type,
|
||||
<a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" target="_top">String</a>.
|
||||
For any primitive Java type, a tuple binding may be created using the
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleBinding.html#getPrimitiveBinding(java.lang.Class)" target="_top">TupleBinding.getPrimitiveBinding</a>
|
||||
|
||||
static method.
|
||||
</p>
|
||||
<p>
|
||||
The custom key binding classes, <tt class="classname">PartKeyBinding</tt>,
|
||||
<tt class="classname">SupplierKeyBinding</tt> and <tt class="classname">ShipmentKeyBinding</tt>, are
|
||||
defined by extending the
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleBinding.html" target="_top">TupleBinding</a>
|
||||
|
||||
class. The
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleBinding.html" target="_top">TupleBinding</a>
|
||||
|
||||
abstract class implements the
|
||||
<a href="../../java/com/sleepycat/bind/EntryBinding.html" target="_top">EntryBinding</a>
|
||||
|
||||
interface, and is used for one-to-one bindings between tuples and
|
||||
objects. Each binding class implements two methods for converting
|
||||
between tuples and objects. Tuple fields are read using the
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleInput.html" target="_top">TupleInput</a>
|
||||
|
||||
parameter and written using the
|
||||
<a href="../../java/com/sleepycat/bind/tuple/TupleOutput.html" target="_top">TupleOutput</a>
|
||||
|
||||
parameter.
|
||||
</p>
|
||||
<a id="tuple_partkeybinding"></a>
|
||||
<pre class="programlisting"><b class="userinput"><tt>import com.sleepycat.bind.tuple.TupleBinding;
|
||||
import com.sleepycat.bind.tuple.TupleInput;
|
||||
import com.sleepycat.bind.tuple.TupleOutput;
|
||||
...</tt></b>
|
||||
public class SampleViews
|
||||
{
|
||||
...
|
||||
|
||||
<b class="userinput"><tt>private static class PartKeyBinding extends TupleBinding
|
||||
{
|
||||
private PartKeyBinding()
|
||||
{
|
||||
}
|
||||
|
||||
public Object entryToObject(TupleInput input)
|
||||
{
|
||||
String number = input.readString();
|
||||
return new PartKey(number);
|
||||
}
|
||||
|
||||
public void objectToEntry(Object object, TupleOutput output)
|
||||
{
|
||||
PartKey key = (PartKey) object;
|
||||
output.writeString(key.getNumber());
|
||||
}
|
||||
}
|
||||
...
|
||||
private static class SupplierKeyBinding extends TupleBinding
|
||||
{
|
||||
private SupplierKeyBinding()
|
||||
{
|
||||
}
|
||||
|
||||
public Object entryToObject(TupleInput input)
|
||||
{
|
||||
String number = input.readString();
|
||||
return new SupplierKey(number);
|
||||
}
|
||||
|
||||
public void objectToEntry(Object object, TupleOutput output)
|
||||
{
|
||||
SupplierKey key = (SupplierKey) object;
|
||||
output.writeString(key.getNumber());
|
||||
}
|
||||
}
|
||||
...
|
||||
private static class ShipmentKeyBinding extends TupleBinding
|
||||
{
|
||||
private ShipmentKeyBinding()
|
||||
{
|
||||
}
|
||||
|
||||
public Object entryToObject(TupleInput input)
|
||||
{
|
||||
String partNumber = input.readString();
|
||||
String supplierNumber = input.readString();
|
||||
return new ShipmentKey(partNumber, supplierNumber);
|
||||
}
|
||||
|
||||
public void objectToEntry(Object object, TupleOutput output)
|
||||
{
|
||||
ShipmentKey key = (ShipmentKey) object;
|
||||
output.writeString(key.getPartNumber());
|
||||
output.writeString(key.getSupplierNumber());
|
||||
}
|
||||
}</tt></b>
|
||||
...
|
||||
} </pre>
|
||||
</div>
|
||||
<div class="navfooter">
|
||||
<hr />
|
||||
<table width="100%" summary="Navigation footer">
|
||||
<tr>
|
||||
<td width="40%" align="left"><a accesskey="p" href="tupleswithkeycreators.html">Prev</a> </td>
|
||||
<td width="20%" align="center">
|
||||
<a accesskey="u" href="Tuple.html">Up</a>
|
||||
</td>
|
||||
<td width="40%" align="right"> <a accesskey="n" href="tuple-serialentitybindings.html">Next</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="40%" align="left" valign="top">
|
||||
Using Tuples with Key Creators
|
||||
</td>
|
||||
<td width="20%" align="center">
|
||||
<a accesskey="h" href="index.html">Home</a>
|
||||
</td>
|
||||
<td width="40%" align="right" valign="top">
|
||||
Creating Tuple-Serial Entity Bindings
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user