Stu,
usually a select for update is done _explicitely_ to prevent others from doing something
with this entity. We do not have control whether this is good or not.
I do agree with you that this should barely be used in a webapp, because sometimes this
can even lead to a table-lock (some dbs cannot do a simple record lock without either
locking the page or sometimes even the whole table).
Imo this functionality should NEVER have added to the EntityManager but might have been
provided via a separate API, etc. But that's how it is currently :/
But this is not the only reason why the EM is not Serializable. If you did serialize an
old Hibernate-2 EM then you lost all the non-persistent status. This doesn't sound
sane neither...
LieGrue,
strub
----- Original Message -----
From: Stuart Douglas <stuart.w.douglas(a)gmail.com>
To: Mark Struberg <struberg(a)yahoo.de>
Cc: Christian Bauer <christian.bauer(a)gmail.com>;
"cdi-dev(a)lists.jboss.org" <cdi-dev(a)lists.jboss.org>
Sent: Thursday, March 15, 2012 12:34 PM
Subject: Re: [cdi-dev] Support Request (and Conversation?) Scope in @Singleton @Startup
@PostConstruct methods
On 15/03/2012, at 10:26 PM, Mark Struberg wrote:
> Simply as that: as the EntityManager per spec doesn't implement
Serializable.
>
>
> Also the EJB spec explicitely states it as well in Section 4.2:
>> - A container must not passivate a stateful session bean with an
extended
>> persistence context unless ...
>
>
> Thus an Extended EM doesn't need to be Serializable. If you build a
feature based on the assumption that each EntityManager is Serializable, then it
will result in non-portable behaviour.
>
> Well, in JPA-1 it would at least have been possible to implement a
Serializable EM, but in JPA2 you are mostly out of luck.
>
> There are tons of indicators. As an example: how would you serialize an
EntityManager which holds a pessimistic lock() on the database? ^^
If you are holding a lock longer that a request you are doing something wrong.
As you are probably not going to want to serialise the entity manager in the
middle of a request it should be possible to work around it.
Also not everyone uses HA clusters or persistent sessions, so the conversation
scope is not always actually serialised.
There are still a lot of use cases for this, but it obviously there are
limitations.
Stuart
>
> LieGrue,
> strub
>
>
>
>
> ----- Original Message -----
>> From: Christian Bauer <christian.bauer(a)gmail.com>
>> To: cdi-dev(a)lists.jboss.org
>> Cc:
>> Sent: Thursday, March 15, 2012 9:18 AM
>> Subject: Re: [cdi-dev] Support Request (and Conversation?) Scope in
@Singleton @Startup @PostConstruct methods
>>
>>
>> On Mar 6, 2012, at 2:58 , Mark Struberg wrote:
>>
>>> The EM is per JPA spec NOT Serializable and thus must not get
stored in the
>> Session.
>>
>> Chapter and section?
>>
>>
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/cdi-dev
>>
> _______________________________________________
> cdi-dev mailing list
> cdi-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/cdi-dev