Lendo aquele livro que anexei no último Post encontrei uma resposta para está questão.
Onde diz que manter e compartilhar instâncias conceitualmente é o correto, porém na prática é problemático:
Isolating or Sharing Instances
At the application server, should we have shared Domain Model instantiaton, per user or per
session? Well, I like the idea of a shared Domain Model instantiation in theory, but in practice I
prefer to stay away from it most often. It gets much more complex than what you would first
expect, so I go for a Domain Model instantiation per user instead or actually usually per session.
It's much simpler.
One of the main problems with a shared set of instantiated domain objects occurs if it has to
execute in a distributed fashion, perhaps on two application servers in a "shared nothing" cluster.
We then have the problem of distributed caching, and that's a tricky problem (to make an
understatement), at least if you need real-time consistency. It is so tricky that I have given up on it
for now as far as finding a general solution that can scale up well. However, for specific situations,
we can find good enough solutions. Of course, if we have all Domain Model instances in memory,
there are probably fewer situations where we need to scale out, at least for efficiency reasons. Still,
ifwe do have the problem, it's a tough one to solve in a good way.
Note
The term "shared nothing" cluster needs a short explanation. What I'm aiming at is that
the application servers aren't sharing either CPU, disk, or memory. They are totally
independent of each other, which is beneficial for scalability.
To read much more about this I recommend Pfister's In Search of Clusters[Pfister
Wolfpack].