|
Thanks for your answer,I solved the problem
It is difficult to say, but It was very
obvious fault:)
By the way I have one dao
manager.
Problem was that, I had my code different,
than I wrote in my post.
I didn't excecute endTransaction() (It was in
my catch exception section instead of finally section), so after
commitTransaction, transaction was still in progress.
I was tricked by the fact, that commit
transaction should release all resources and locks. Database transaction was
commited, but still locked the tables
Can you explain that magic. I always thought,
that commit releases resources?
Anyway thanks for help
Best regards
Darek Dober
----- Original Message -----
Sent: Friday, August 05, 2005 1:09
AM
Subject: Re: daoManager start/end/commit
transaction problem
Three things:
1) You should only have one DAO
manager, even with multiple databases.
2) In my opinion, your
transactions should be at the service level. Make more coarse grained
service methods that demarcate transactional scope.
3) Be very
careful with multiple start/commit/end blocks. You should consider a
global transaction manager if you're working with multiple
databases.
Cheers, Clinton
On 8/4/05, Darek
Dober <[EMAIL PROTECTED]>
wrote:
Hi
I
use petstore as example so I have:
affairService and debtorService
which gives me method like updateAffair(Domain affair) and
updateDebtor(Domain debtor)
Now I want them to be executed in one
transaction
I try to do something like this
update()
{ ... try
{ affairService.getDaoManager().startTransaction();
affairService.updateAffair(affair); debtorService.updateDebtor(debtor);
affairService.getDaoManager
().commitTransaction();
} catch (Exception ex) { .. } finally
{ affairService.getDaoManager().endTransaction(); }
But after
that operation i have some locks in database.
Is this the correct
way, or should I use start/commit/endTransaction() method at the lower
level of ...sqlMapDao (i.e affairSqlMapDao) Or maybe I should
do it in pairs
like: affairService.getDaoManager().startTransaction(); debtorService.getDaoManager().startTransaction();
.. affairService.getDaoManager().commitTransaction(); debtorService.getDaoManager().commitTransaction();
Darek
Dober
|