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
, 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.
There are mailing lists for the developer community for EOF and related technologies available at http://www.omnigroup.com/community/developer/mailinglists/
Also referred to as EOF. An ObjectRelationalMapping
software framework from AppleComputer
, which acquired the technology from NeXt
It is used with the WebObjects ApplicationServer
to provide ObjectPersistence
. It allows WebObjects
developers to use the ModelViewController
concept when designing applications, serving the role of the 'model'.
up until version 4.5.1 were written in ObjectiveCee
, with a Java bridge to allow programmers to write applications against the frameworks in either ObjectiveCee
or Java. The current version WebObjects
, and both it and the current version of EnterpriseObjectsFramework
are now 100% Java.
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.
If you can't work with WebObjects
/EOF themselves, CayenneFramework
might be the next-best thing. -- FalkBruegmann
(now owned by Oracle) also seems to be compatible -- MikeKienenberger
An overview can be found at http://developer.apple.com/techpubs/webobjects/WebObjectsOverview/index.html