Author:Roman

Date:2014-01-17T23:49:16.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1245 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
roman
2014-01-17 23:49:16 +00:00
parent 7b73a19a9e
commit 8d4a21655e
2 changed files with 38 additions and 1 deletions

View File

@@ -1,5 +1,40 @@
[[Property:title|ABEL]]
[[Property:weight|0]]
[[Property:uuid|585002f7-4f2c-e575-f3a2-0a339f349980]]
A library for object persistence.
== Overview ==
ABEL is intended as an easy-to-use persistence library. It provides a high-level interface for storing and retrieving objects, selection criteria when querying objects, lazy loading of results, and transactions. ABEL can work with different storage backends such as MySQL or CouchDB transparently.
== Features ==
* Store and retrieve objects
* Filter retrieved objects based on criteria
* Transaction support
* Read only and read-write access
* Lazy loading of query results
* Support for different backends
* Support for access to relational databases created by EiffelStore.
== When to use it? ==
ABEL can be used whenever an application needs some basic persistency without the developer having to think about the data format or object-relational mapping. It may also be used to read and write table records for an existing database, provided that there is a set of classes matching the database tables.
It is not a good idea to use ABEL in a high-performance setting. Due to its high level of abstraction there are a lot of internal data conversions to enable automatic object-relational mapping.
== Current limitations ==
* The CouchDB backend has some severe limitations.
* The garbage collector currently only works for single-user systems and is rather primitive, as it needs to load the whole database into memory.
* The ESCHER plugin, which handles class schema evolution, has never been properly tested. Use at your own risk.
== Future work ==
* Support for caching for performance reasons.
* Lazy retrieval of referenced objects in an object graph. This requires support in the compiler however.
* Some handy features for the backend that deals with existing databases:
** Allow to provide a custom class name to table name mapping.
** A way to automatically resolve 1:N or M:N relations.
** Support automatic creation of classes from tables, or tables from classes.
* Support other databases like Oracle or Microsoft SQL.

View File

@@ -87,6 +87,7 @@ end
Because we're using an existing MySQL database, we need to choose the <e>PS_MYSQL_RELATIONAL_REPOSITORY_FACTORY</e> for initialization.
<code>
class
TUTORIAL
@@ -115,6 +116,7 @@ feature {NONE} -- Initialization
end
end
</code>
That's it. You're now ready to read and write table records using the repository.