Berkeley DB Java Edition
version 3.0.12

com.sleepycat.persist.model
Class EntityModel

java.lang.Object
  extended by com.sleepycat.persist.model.EntityModel
Direct Known Subclasses:
AnnotationModel

public abstract class EntityModel
extends Object

The base class for classes that provide entity model metadata. An EntityModel defines entity classes, primary keys, secondary keys, and relationships between entities. For each entity class that is part of the model, a single PrimaryIndex object and zero or more SecondaryIndex objects may be accessed via an EntityStore.

The built-in entity model, the AnnotationModel, is based on annotations that are added to entity classes and their key fields. Annotations are used in the examples in this package, and it is expected that annotations will normally be used; most readers should therefore skip to the AnnotationModel class. However, a custom entity model class may define its own metadata. This can be used to define entity classes and keys using mechanisms other than annotations.

A concrete entity model class should extend this class and implement the getClassMetadata(java.lang.String), getEntityMetadata(java.lang.String) and getKnownClasses() methods.

This is an abstract class rather than an interface to allow adding capabilities to the model at a future date without causing incompatibilities. For example, a method may be added in the future for returning new information about the model and subclasses may override this method to return the new information. Any new methods will have default implementations that return default values, and the use of the new information will be optional.

Author:
Mark Hayes

Constructor Summary
protected EntityModel()
          The default constructor for use by subclasses.
 
Method Summary
 SortedMap<Integer,RawType> getAllRawTypes(String className)
          Returns all known versions of type information for a given class name, or null if the class is not persistent.
abstract  ClassMetadata getClassMetadata(String className)
          Returns the metadata for a given persistent class name, including proxy classes and entity classes.
abstract  EntityMetadata getEntityMetadata(String className)
          Returns the metadata for a given entity class name.
abstract  Set<String> getKnownClasses()
          Returns the names of all known persistent classes.
 RawType getRawType(String className)
          Returns the type information for the current version of a given class, or null if the class is not persistent.
 void registerClass(Class persistentClass)
          Registers a persistent class, most importantly, a PersistentProxy class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EntityModel

protected EntityModel()
The default constructor for use by subclasses.

Method Detail

registerClass

public final void registerClass(Class persistentClass)
Registers a persistent class, most importantly, a PersistentProxy class. Any persistent class may be registered in advance of using it, to avoid the overhead of updating the catalog database when an instance of the class is first stored. This method must be called to register PersistentProxy classes. This method must be called before opening a store based on this model.

Throws:
IllegalStateException - if this method is called for a model that is associated with an open store.
IllegalArgumentException - if the given class is not persistent.

getClassMetadata

public abstract ClassMetadata getClassMetadata(String className)
Returns the metadata for a given persistent class name, including proxy classes and entity classes.

Returns:
the metadata or null if the class is not persistent or does not exist.

getEntityMetadata

public abstract EntityMetadata getEntityMetadata(String className)
Returns the metadata for a given entity class name.

Returns:
the metadata or null if the class is not an entity class or does not exist.

getKnownClasses

public abstract Set<String> getKnownClasses()
Returns the names of all known persistent classes. A type becomes known when an instance of the type is stored for the first time or metadata or type information is queried for a specific class name.

Returns:
an unmodifiable set of class names.
Throws:
IllegalStateException - if this method is called for a model that is not associated with an open store.

getRawType

public final RawType getRawType(String className)
Returns the type information for the current version of a given class, or null if the class is not persistent.

Throws:
IllegalStateException - if this method is called for a model that is not associated with an open store.

getAllRawTypes

public final SortedMap<Integer,RawType> getAllRawTypes(String className)
Returns all known versions of type information for a given class name, or null if the class is not persistent.

Returns:
an unmodifiable map of version number to RawType.
Throws:
IllegalStateException - if this method is called for a model that is not associated with an open store.

Berkeley DB Java Edition
version 3.0.12

Copyright (c) 1996-2006 Sleepycat Software, Inc. - All rights reserved.