On Wed, Apr 28, 2010 at 1:09 PM, Rickard Öberg <[email protected]> wrote:

> Lazy-loading in properties in entities is implemented in the sense that the
> data will not be deserialized until a property is loaded. But the data for
> an entity will be loaded in full when it is accessed. However, this is an
> implementation detail, and it would be entirely possible to only load parts
> of an entity when accessing it, provided that you have split it up
> accordingly when storing it.

You don't have large collections of values in your system, so you
don't see my point;

Property<List<SomeValue>> values();

and the list is 15,000 elements, where I add a value regularly, but
seldom access the entire thing (maybe as a nightly aggregation). Then
the performance will degrade exponentially with growing of the
collection. Since you seem not willing to build in timeseries support
in the persistence (below) then this becomes even more useful.

> That's what I did in SiteVision actually, where each mixin was stored
> separately.

I am not talking about large collections of individual properties, but
literally large Lists and Maps of data where you continously add stuff
(expensive if no explicit support for it).


> Hm... maybe that now when there's no apply(), it could be done more easily.
> Have to think about it. Again: what is the usecase though?

You built the use-cases originally with interactive applications.

> The main reason I can see history being important is actually to support
> time, in the sense that Rich Hickey of Clojure describes it. If you have
> entities A(v1) and B(v1)

Not talking about that. But timeseries data (of course heavily
influenced by my new job), where you basically provide a slider to the
entire application and can set that at "23:04 24 April 2010" and look
at what the snapshot state was. Building that manually is quite nasty
at application level.

> To handle messaging generally, on a system level, is outside our scope. That
> is what ESBs like Camel and Mule does, and I would prefer to leave it to
> them.

Paraphrase; "To handle peristence generally, on a system level, is
outside out scope. That is what ORMs , like Hibernate and OpenJPA
does, and I would prefer to leave it to them."

In my opinion, message-support is for large set of application as
central (or more) as persistence. Being able to abstract away the
mechanics from application development seems to make a LOT of sense to
me, having Camel and Mule being the implementations used in the SPI
extensions. Yes, the formulation of such abstraction does not exist
yet, and that is where persistence was a few years ago, and I think we
have done a pretty good job there.

> Qi4j should deal with everything that an application developer has to deal
> with. System level detail should be plugins, and is outside our scope.

You are arguing against yourself. Qi4j should provide an environment
where the application developer doesn't need to be concerned about
system level details, and therefor part of the problems (of the app
developer) that Qi4j solves for him/her. Hence inside our scope.



Cheers
-- 
Niclas Hedhman, Software Developer
http://www.qi4j.org - New Energy for Java

I  live here; http://tinyurl.com/2qq9er
I  work here; http://tinyurl.com/2ymelc
I relax here; http://tinyurl.com/2cgsug

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

Reply via email to