The DataDictionary
provides an object-oriented API to the SystemTables.
The API to the DataDictionary lives in the org.apache.derby.iapi.sql.dictionary
package.
Additional internal implementation classes for the DataDictionary are found in the org.apache.derby.impl.sql.catalog
package.
Classes in the DataDictionary API tend to correspond closely to the SystemTables. These classes are called "Descriptor" classes. So, for example, there is TableDescriptor
which provides the object-oriented API to a row in SYSTABLES.
Other major classes are ColumnDescriptor
, ViewDescriptor
, ConstraintDescriptor
, TriggerDescriptor
, etc.
Classes in the compile and execute portions of the LanguageSystem gain access to the DataDictionary
via the LanguageConnectionContext
, which in turn is accessed via the ContextManager
.
Factory classes in the internal implementation are responsible for constructing Descriptor classes from the SystemTables. So, for example, SYSTABLESRowFactory
knows how to make a TableDescriptor
from a row in the SYSTABLES
table.
An important (and complex) part of the DataDictionary
implementation is DataDictionaryCaching.