Difference between revisions of "Persistence unified"
(→Three abstractions) |
(→Unified persistence for Eiffel) |
||
Line 2: | Line 2: | ||
This project is about developing a single, integrated and simple persistence framework for Eiffel. | This project is about developing a single, integrated and simple persistence framework for Eiffel. | ||
− | Single because nothing else should be needed to access any kind of persistence services. | + | *Single because nothing else should be needed to access any kind of persistence services. |
− | Integrated because aims at integrating both the already existing technologies and frameworks, as far as they deliver the intended benefits, and possibly new ones. | + | *Integrated because aims at integrating both the already existing technologies and frameworks, as far as they deliver the intended benefits, and possibly new ones. |
− | Simple because it should be very easy to use, removing all the unnecessary complexity. | + | *Simple because it should be very easy to use, removing all the unnecessary complexity. |
===A tentative manifesto=== | ===A tentative manifesto=== |
Revision as of 09:03, 17 August 2007
Contents
Unified persistence for Eiffel
This project is about developing a single, integrated and simple persistence framework for Eiffel.
- Single because nothing else should be needed to access any kind of persistence services.
- Integrated because aims at integrating both the already existing technologies and frameworks, as far as they deliver the intended benefits, and possibly new ones.
- Simple because it should be very easy to use, removing all the unnecessary complexity.
A tentative manifesto
The first proposed task is to agree upon a sort of ‘manifesto’ of desirable features of the framework.
Here is a first proposal:
Three abstractions
The framework should provide just three abstractions to the developer: PERSISTENCE_MEDIUM, PERSISTENCE_FORMAT and PERSISTENCE_MANAGER.
Possible specializations of these abstractions could be:
- FILE_MEDIUM, NETWORK_MEDIUM, RELATIONAL_DB_MEDIUM, CUSTOM_MEDIUM, ...
- BINARY_FORMAT, STRING_FORMAT, XML_FORMAT, DADL_FORMAT, CUSTOM_FORMAT, ...
- SERIALIZATION_MANAGER, RDBMS_MANAGER, CUSTOM_MANAGER, ...
Persistence independence
Classes which objects have to be persisted should not be polluted with persistence code, for example adding specific persistence-related attributes or by inhering from some other class that provides persistence services.
- The access to the persistence services should be as uniform as possible. This can be achieved using the XXX_MANAGER class hierarchy that handles access to specific kinds of persistence stores
- The different media should be properly incapsulated. This can be achieved using the XXX_MEDIUM class hierarchy
- The different formats should be properly incapsulated. This can be achieved using the XXX_FORMAT class hierarchy