You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Rashmi Dave <ra...@persistent.co.in> on 2006/03/14 11:20:36 UTC

Nested Transactions

Hi All,

I am not sure if this is a silly/obvious question, however, here goes:

I have a function called CreateABC. This starts a transaction, inserts into
the DB and then commits the transaction and finally stops it.

I have another function which is called CreateXYZ. This function also does
the same thing. However, it also calls CreateABC internally since ABC needs
to be created as part of creation of XYZ. 

CreateABC - 
Start T1
Insert ABC
Commit T1

CreateXYZ - 
Start T2
Insert X
Insert Y
CreateABC
Insert Z
Commit T2

What I want to know is, in case Insert Z fails, and a rollback needs to be
done, will ABC, X and Y get rolled back? I am using Abator generated classes
for ibatis...

TIA

~Rashmi



Re: Nested Transactions

Posted by Jeff Butler <je...@gmail.com>.
Why not do this in one transaction?

The ABC DAO class should not have any transaction code in it, either should
the XYZ DAO.  A service level method should do the transaction code:

CreateABC -
Insert ABC

Create XYZ -
Insert X
Insert Y
CreateABC
Insert Z

XYZ Service -
Start T1
Create XYZ
Commit T1

Jeff Butler



On 3/14/06, Rashmi Dave <ra...@persistent.co.in> wrote:
>
> Hi All,
>
> I am not sure if this is a silly/obvious question, however, here goes:
>
> I have a function called CreateABC. This starts a transaction, inserts
> into
> the DB and then commits the transaction and finally stops it.
>
> I have another function which is called CreateXYZ. This function also does
> the same thing. However, it also calls CreateABC internally since ABC
> needs
> to be created as part of creation of XYZ.
>
> CreateABC -
> Start T1
> Insert ABC
> Commit T1
>
> CreateXYZ -
> Start T2
> Insert X
> Insert Y
> CreateABC
> Insert Z
> Commit T2
>
> What I want to know is, in case Insert Z fails, and a rollback needs to be
> done, will ABC, X and Y get rolled back? I am using Abator generated
> classes
> for ibatis...
>
> TIA
>
> ~Rashmi
>
>
>