# The Java Classes

> As Java is an object oriented language, the eXtremeDB Java Native Interface (JNI) it is implemented as a "wrapper" over the core C language eXtremeDB libraries. However, the JNI does not simply translate calls to the underlying C API (with all of the appropriate arguments) but implements an object model of database interface where functionalities are grouped and encapsulated in classes.

> For example, the Connection class encapsulates the C API connection handle `mco_db_h`. Instances of Connection internally call the C function `mco_db_connect()` in its constructor and function `mco_db_disconnect()` in its `close()` method and in its destructor. So the Connection class logically aggregates wrappers of the C API functions that require a connection handle `mco_db_h` as main argument.

> Likewise, class Database implements methods which directly or indirectly call C API functions that are not related to a separated connection, like `mco_runtime_start()`, `mco_runtime_stop()`, `mco_db_open()`, `mco_db_close()` etc.

> Please use the links below to view the individual class definitions:

> Database | Database creation, open and close
> Connection | Methods for database operations
> Cursor | Methods for iterating through instances of a class
> Aggregator | Used to perform aggregation
> GroupByResult | Represents the result of `group by` aggregation operation
> Sequence | Used to store an array field in the database as a sequence
> SequenceIterator | Used to iterate `sequence` fields
> Statistic | Used to provide runtime database statistics
> SQL Classes
> SqlAggregator | Aggregate multiple SqlLocalConnection engines
> SqlCursor | Used to iterate through the result of an SQL query
> SqlLocalConnection | Used for local (in process) SQL access
> SqlRemoteConnection | Used for remote SQL access to a SqlServer instance
> SqlResultSet | Data set for SQL query results
> SqlServer | Provides a SQL server for SqlLocalConnection and SqlRemoteConnection access
> SqlTuple | The unit (a row) of SQL query results
> Transaction Logging Classes
> LogReader | eXtremeDB Transaction Logging transaction log reader
> LogWriter | eXtremeDB Transaction Logging transaction log writer
> High Availability Classes
> MasterConnection | Extends Connection for eXtremeDB High Availability master applications
> ReplicaConnection | Extends Connection for eXtremeDB High Availability replica applications
> ClusterConnection | Extends Connection for eXtremeDB Cluster applications