Hey,

I just committed a rewrite of UnitOfWork. Apart from a bunch of 
performance fixes the main difference is that UnitOfWork now has two 
layers: one outer layer that the client holds on to, and which deals 
with lookup of EntityTypes and such, and then there's an inner layer 
which holds on to the changes in the UoW.

One of the main consequences of this is that now a client can start a 
UoW, then let it continue into Services, and when they do 
UoWF.currentUnitOfWork() they will get a UnitOfWork that can "see" all 
Entities in the Module *of the Service* (as opposed to the client as it 
was before). This makes using UnitOfWork much easier and natural, as 
before one had to create nestedUnitOfWork() just to get the proper 
visibility in the Service.

This also cleared up some old UoW bugs. The new implementation is also, 
as noted above, considerably faster. I have added caches to all lookups 
too, so once an EntityType has been resolved for a mixintype in a 
Module, that result will be cached for subsequent calls. Muuuuch faster.

I have also added caches for Composite, Value, Object and Service 
lookups. The last one means that if you do 
Module.serviceFinder().findService(SomeService.class) then a lookup will 
only be performed the first time. Any subsequent call with the same type 
in the same Module will return a cached result, which is way faster.

/Rickard

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to