Berkeley DB Java Edition
version 3.3.75

com.sleepycat.je
Interface SecondaryKeyCreator

All Known Implementing Classes:
SerialSerialKeyCreator, TupleSerialKeyCreator, TupleSerialMarshalledKeyCreator, TupleTupleKeyCreator, TupleTupleMarshalledKeyCreator

public interface SecondaryKeyCreator

The interface implemented for extracting single-valued secondary keys from primary records.

The key creator object is specified by calling SecondaryConfig.setKeyCreator. The secondary database configuration is specified when calling Environment.openSecondaryDatabase.

For example:

     class MyKeyCreator implements SecondaryKeyCreator {
         public boolean createSecondaryKey(SecondaryDatabase secondary,
                                             DatabaseEntry key,
                                             DatabaseEntry data,
                                             DatabaseEntry result)
             throws DatabaseException {
             //
             // DO HERE: Extract the secondary key from the primary key and
             // data, and set the secondary key into the result parameter.
             //
             return true;
         }
     }
     ...
     SecondaryConfig secConfig = new SecondaryConfig();
     secConfig.setKeyCreator(new MyKeyCreator());
     // Now pass secConfig to Environment.openSecondaryDatabase
 

Use this interface when zero or one secondary key is present in a single primary record, in other words, for many-to-one and one-to-one relationships. When more than one secondary key may be present (for many-to-many and one-to-many relationships), use the SecondaryMultiKeyCreator interface instead. The table below summarizes how to create all four variations of relationships.

Relationship Interface Duplicates Example
One-to-one SecondaryKeyCreator No A person record with a unique social security number key.
Many-to-one SecondaryKeyCreator Yes A person record with a non-unique employer key.
One-to-many SecondaryMultiKeyCreator No A person record with multiple unique email address keys.
Many-to-many SecondaryMultiKeyCreator Yes A person record with multiple non-unique organization keys.

To configure a database for duplicates. pass true to DatabaseConfig.setSortedDuplicates(boolean).


Method Summary
 boolean createSecondaryKey(SecondaryDatabase secondary, DatabaseEntry key, DatabaseEntry data, DatabaseEntry result)
          Creates a secondary key entry, given a primary key and data entry.
 

Method Detail

createSecondaryKey

boolean createSecondaryKey(SecondaryDatabase secondary,
                           DatabaseEntry key,
                           DatabaseEntry data,
                           DatabaseEntry result)
                           throws DatabaseException
Creates a secondary key entry, given a primary key and data entry.

A secondary key may be derived from the primary key, primary data, or a combination of the primary key and data. For secondary keys that are optional, the key creator method may return false and the key/data pair will not be indexed. To ensure the integrity of a secondary database the key creator method must always return the same result for a given set of input parameters.

Parameters:
secondary - the database to which the secondary key will be added. This parameter is passed for informational purposes but is not commonly used.
key - the primary key entry. This parameter must not be modified by this method.
data - the primary data entry. This parameter must not be modified by this method.
result - the secondary key created by this method.
Returns:
true if a key was created, or false to indicate that the key is not present.
Throws:
DatabaseException - if an error occurs attempting to create the secondary key.

Berkeley DB Java Edition
version 3.3.75

Copyright (c) 2004,2008 Oracle. All rights reserved.