DataHandling, DataMapping and Persistence
A problem I found in all existing frameworks. The data mapping and handling depends on databases. Sometimes you have no way to use files, webservices, LDAP or whatever. No abstraction from persistence and mapping or the existing abstraction is to (SQL) database centric.
But why not load or save XML Data, SOAP, CSV, NoSQL, LDAP, ... Data on the same way like from (SQL) databaeses?
An example would be, you write an application which can change data and export the data to CSV (or XLS maybe). You load and save data via your framework (with a data mapper or something like that). But why you need another way for your export? So we need a better abstraction in ForwardFW.
Another one is, loading data from a webservice and add some data from a database (maybe you only get prices for a holiday trip via SOAP but you have your own description inside your database). Why use different ways to load the data?
The DataHandler
The DataHandler is used to handle the data from the application to the persistence system (Databases, Services, Files, ...). So it will only have three functionalities, loading, saving (updating is a form of saving) and error handling. The loading can be connected to the caching system.
So the handler only have the function to give data to the mapper or put data from the mapper to the persistence system.
The DataMapper
This is the point where I'm yet now (as of development of 0.0.11) and it is a absolute brain fuck for me. As I don't found good examples how to do it. On the one side you don't want intelligent base objects (so they shouldn't have load/update/save functions) on the other side, why should a controller have knowlade about the mapper? But on the other side, the controller needs the knowladge of the mapper as he needs to say to which data handler the data should be send. Maybe the mapper differs for saving int a database or to a service or a file.
I've no idea yet, how to do this. In an older project at Netresearch i put the mapping for loading and saving into the model objects and the finding into list objects. But this isn't a clean MVC principle. So how the hell I should do this? ;-D