jdbm

## Interface RecordManager

All Known Subinterfaces:
  ActionRecordManager

All Known Implementing Classes:
  BaseRecordManager, CacheRecordManager, SnapshotRecordManager

    public interface RecordManager

An interface to manages records, which are uninterpreted blobs of data.

The set of record operations is simple: fetch, insert, update and delete. Each record is identified using a "rowid" and contains a byte[] data block. Rowids are returned on inserts and you can store them someplace safe to be able to get back to them. Data blocks can be as long as you wish, and may have lengths different from the original when updating.

Author:
  Alex Boisvert, Cees de Groot

### Field Summary

Fields
`static int` `NAME_DIRECTORY_ROOT` Reserved slot for name directory.

### Method Summary

Methods
`void` `close()` Closes the record manager.
`void` `commit()` Commit (make persistent) all changes since beginning of transaction.
`void` `delete(long recid)` Deletes a record.
`Object` `fetch(long recid)` Fetches a record using standard java object serialization.
`Object` `fetch(long recid, Serializer serializer)` Fetches a record using a custom serializer.
`long` `getNamedObject(String name)` Obtain the record id of a named object.
`long` `getRoot(int id)` Returns the indicated root rowid.
`int` `getRootCount()` Returns the number of slots available for "root" rowids.
`long` `insert(Object obj)` Inserts a new record using standard java object serialization.
`long` `insert(Object obj, Serializer serializer)` Inserts a new record using a custom serializer.
`void` `rollback()` Rollback (cancel) all changes since beginning of transaction.
`void` `setNamedObject(String name, long recid)` Set the record id of a named object.
`void` `setRoot(int id, long rowid)` Sets the indicated root rowid.
`void` `update(long recid, Object obj)` Updates a record using standard java object serialization.
`void` `update(long recid, Object obj, Serializer serializer)` Updates a record using a custom serializer.

### Field Detail

#### NAME_DIRECTORY_ROOT

    static final int NAME_DIRECTORY_ROOT

Reserved slot for name directory.

See Also:
  Constant Field Values

### Method Detail

#### insert

    long insert(Object obj)
                throws IOException

Inserts a new record using standard java object serialization.

Parameters:
  `obj` - the object for the new record.
Returns:
  the rowid for the new record.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### insert

    long insert(Object obj,
              Serializer serializer)
                throws IOException

Inserts a new record using a custom serializer.

Parameters:
  `obj` - the object for the new record.
  `serializer` - a custom serializer
Returns:
  the rowid for the new record.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### delete

    void delete(long recid)
                throws IOException

Deletes a record.

Parameters:
  `recid` - the rowid for the record that should be deleted.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### update

    void update(long recid,
              Object obj)
                throws IOException

Updates a record using standard java object serialization.

Parameters:
  `recid` - the recid for the record that is to be updated.
  `obj` - the new object for the record.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### update

    void update(long recid,
              Object obj,
              Serializer serializer)
                throws IOException

Updates a record using a custom serializer.

Parameters:
  `recid` - the recid for the record that is to be updated.
  `obj` - the new object for the record.
  `serializer` - a custom serializer
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### fetch

    Object fetch(long recid)
                 throws IOException

Fetches a record using standard java object serialization.

Parameters:
  `recid` - the recid for the record that must be fetched.
Returns:
  the object contained in the record.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### fetch

    Object fetch(long recid,
               Serializer serializer)
                 throws IOException

Fetches a record using a custom serializer.

Parameters:
  `recid` - the recid for the record that must be fetched.
  `serializer` - a custom serializer
Returns:
  the object contained in the record.
Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### close

    void close()
               throws IOException

Closes the record manager.

Throws:
  `IOException` - when one of the underlying I/O operations fails.

#### getRootCount

    int getRootCount()

Returns the number of slots available for "root" rowids. These slots can be used to store special rowids, like rowids that point to other rowids. Root rowids are useful for bootstrapping access to a set of data.

#### getRoot

    long getRoot(int id)
                 throws IOException

Returns the indicated root rowid.

Throws:
  `IOException`
See Also:
  `getRootCount()`

#### setRoot

    void setRoot(int id,
               long rowid)
                 throws IOException

Sets the indicated root rowid.

Throws:
  `IOException`
See Also:
  `getRootCount()`

#### commit

    void commit()
                throws IOException

Commit (make persistent) all changes since beginning of transaction.

Throws:
  `IOException`

#### rollback

    void rollback()
                  throws IOException

Rollback (cancel) all changes since beginning of transaction.

Throws:
  `IOException`

#### getNamedObject

    long getNamedObject(String name)
                        throws IOException

Obtain the record id of a named object. Returns 0 if named object doesn't exist.

Throws:
  `IOException`

#### setNamedObject

    void setNamedObject(String name,
                      long recid)
                        throws IOException

Set the record id of a named object.

Throws:
  `IOException`