Enterprise Object Framework (EOF) is the ORMF (Object-Relational Mapping Framework) produced by NeXT Software, Inc. (now part of Apple Computer, Inc). It was originally developed circa 1994 as part of the OpenStep suite of software to address the problem of mapping an object graph to a relational database (particularly Oracle or Sybase). It supersedes its predecessor, DBKit, which was more of a "4GL" (if you remember what that term means :-)) database access toolkit. EOF has been a component of the software environments known as NextStep, OpenStep, Yellow Box, Rhapsody, Cocoa, MacOS X Server, and WebObjects.

The object environment was the OpenStep environment developed by the company including a single inheritance model based around Objective-C, and a reference-counting object allocation strategy built into the root classes. The Foundation toolkit includes base classes such as NSString, NSArray, and NSDictionary, and they are a core part of EOF.

The philosophy behind EOF is to hide all of the SQL details (but not necessarily relational details) of the RDBMS from the developer through many layers of software that makes the transition from scalar data to objects. While it is most commonly used atop a single relational database, the back-end frameworks allow simultaneously using one or more persistent data stores of many types including RDBMS, flat file databases. For instance it would be possible to share four databases in a single application which each reside on Oracle, Sybase, flat-file, and registered user defaults.

The focal point of the architecture are Enterprise Objects which are intended to be fully portable objects that contain only data and business logic, and are acted upon by the rest of the architecture to be fetched, created, inserted, edited, saved, and deleted.

The frameworks in their current release (EOF 3.1, fall 1999) are very full featured and handle virtually all of the details of traversing and editing relationships, uniquely identifying an object before and after saving, editing, undo, object uniquing and snapshotting, and more. EOF has become one of the foundation blocks of WebObjects (WOF), the web development environment from Apple Computer, Inc.

To use it, you create a model of your data (called an EoModel?) that maps EnterpriseObjects? to database tables. An EoModel? has an EoAdaptor?, which is an object that 'talks' to a specific database or datastore. Once you have modeled your data in an EoModel?, you can switch adaptors (and hence databases) very easily. For example, a developer can run against a local Access database for testing using the ODBC adaptor, and then switch to the Oracle adaptor for deployment, with no code changes needed.

With the new 100% Java version, JDBC is used for database access.

Caching, faulting, batching are all supported. Inheritance is supported as well. Cross-datastore mapping is also possible - you can have EnterpriseObjects? mapped in one database have relationships to EnterpriseObjects? in another, completely different database.