Hello everyone,

I opened up an issue on ezPersistentObject to break up dependencies between 
the session and the 3 handlers load, save and delete. Currently their usage is 
only for internal reasons, but they offer huge optimization and extension 
points.

Additionally despite the refactoring they are still to big in my opinion and 
additional features would only increase the handler classes, which would take 
up to many responsibilites.

here is the ticket:
http://issues.ez.no/IssueView.php?Id=14689&activeItem=4

My use case for this break up is the following:

Data Mapping is quite a complex task and having generic load, save, delete 
components is not always the best way out in terms of performance or features 
and the single responsibility principle of OOP.

I want to swap a delegate handler into the play, which based on the $class 
attribute decides which specific handler to call. This way I can build my own 
handlers for any entity that has performance issues or needs more special 
features. 

All the other entities could still use the shipped ezc handlers and benefit 
from its functionality.

For future versions of ezc there are additional benefits of this change:

* New features like inheritence mapping or optimistic locking can be added 
into specific sub-class loaders and savers so that the already existing code 
does not get longer and more complex.
* Performance Based Loaders with Association-Table-Mapping could be added into 
specific loaders that fetch an object and one ore more relations with one 
single select query and build them together correctly.
* Use of Handlers should then be (optionally) configurable via 
ezcPersistentObjectDefinition

This also affects the following issues:
http://issues.ez.no/IssueView.php?Id=13127&activeItem=29
http://issues.ez.no/IssueView.php?Id=13264&activeItem=27
http://issues.ez.no/IssueView.php?Id=13177&activeItem=26

greetings,
Benjamin

-- 
Benjamin Eberlei
http://www.beberlei.de
-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to