Ok, I'll try to do that today.
On Thu, Sep 22, 2011 at 2:13 AM, Dan Allen <dan.j.allen(a)gmail.com> wrote:
On Wed, Sep 21, 2011 at 23:30, Lincoln Baxter, III <
lincolnbaxter(a)gmail.com> wrote:
> There are also other approaches, like "Active Record," but in my opinion,
> the EntityManager poses a bit of a problem: It requires that it must already
> know about the entity. And in my experience that is an inherently difficult
> problem to overcome when attempting to build truly stateless applications -
> resulting in duplicate calls to the database to fetch data that you already
> have (just to sync things up.) While this is good for things like
> transactionality, it is bad for performance, but before I get too far off
> topic here, I'm just going to stop :) In a sense, we are fighting against
> JPA combined with a Strongly Typed language. I think that the lambico
> approach (annotating interfaces, like what Spring did - yep I said it) is
> actually the best approach I've seen in a long time.
>
>
The other point to make here is that the reason we need a class at all is
because the EntityManager only gives us part of what we need. It certainly
does CRUD. But it does provide transaction boundaries, it does not hold a
reference to the active instance and some of it's methods require knowing
the context (persist vs merge vs the implicit update). We don't necessarily
want to hide the EntityManager, since a philosophy of Seam has always been
to keep the native APIs exposed and unwrapped. But we do want to keep the
developer's codebase dry.
...with that said, I'm fine with a "smarter" entity manager class that can
be used as a delegate. But I do think there is merit in offering a class to
extend for rapid development scenarios.
Jose, could you make a gist for how you would create a bean for managing an
entity instance using the composite pattern? I'm asking so we have something
to contrast.
(btw, the term EntityHandler sounds reasonable to me. Another approach
Jason and I had was EntityInstanceManager, or *Handler. We want to
distinguish between the EntityManager which manages all instances and a
component that manages just a single instance).
-Dan
--
Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597
http://www.google.com/profiles/dan.j.allen#about
http://mojavelinux.com
http://mojavelinux.com/seaminaction