Hi, Thanks; see OPENJPA-411 and OPENJPA-412.
-Patrick On 10/22/07, Christiaan <[EMAIL PROTECTED]> wrote: > > Hi, > I am writing this since this may be useful to others. I've quite some > classes which have a List attribute. OpenJPA create a relationship table > with an order column to maintain the order of the elements. Recently we > encountered quite some blocking scenarios when using it in a multi-user > environment. The reason was that when List.add(index, object) is being used > OpenJPA sends the following sql statement, so the order of the elements can > be built up from scratch: > "Delete from RELATION_TABLE where ID = " > > In ms sql server this causes an exclusive lock on the entire table which of > course easily introduces blocking issues (long running transactions having a > shared lock or other client who like to insert objects in their list as > well). > > List.add(Object) does not have this behaviour so when adding objects to the > end of the list it is always better to use this method. My suggestions: > 1) In the proxy list openjpa creates add a check to List.add(index, > object) > whether index is equal to List.size() so it can use the same logic as add() > 2) May be provide some other mode for updating the order of elements when > elements are being inserted, eg. execute update statements instead of a > deletion? > > Kind regards, > Christiaan > > -- > View this message in context: > http://www.nabble.com/Use-of-List-increases-chance-on-concurrency-contention-tf4670571.html#a13342370 > Sent from the OpenJPA Users mailing list archive at Nabble.com. > > -- Patrick Linskey 202 669 5907
