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 Florin Manolache <fl...@ecstend.com> on 2005/07/11 17:17:27 UTC

Re:

Let's say I have 2 tables: BANK_ACCOUNT_1 and BANK_ACCOUNT_2 and 2 sequences 
of operations:
t1: "get_total_balance" which will read data for user x from the first 
table, then from the second table and compute the total
t2: "transfer" which will subtract a certain amount for user x from the 
first table (account entity) and add it to the second table (second account 
entity)

Now, if I don't use a transaction for t1 and only for t2, it is possible 
that during t1 execution, between the first read from first table and the 
second read from the second table, a t2 transaction to occur and commit, so 
the computed total balance will be incorrect. The solution is to use a 
transaction for t1 also, but in order to increase the performance, I should 
set the connection in the read-only mode before starting t1 transactions. Is 
there any way to do this in iBatis?

Thanks,
Florin

----- Original Message ----- 
From: "James, Steven" <St...@logicacmg.com>
To: <us...@ibatis.apache.org>
Cc: <fl...@ecstend.com>
Sent: Monday, July 11, 2005 3:51 PM


> if i understand you you wish for the reads to get the same view if another 
> transaction is processing. eg if user a creates a connection then user b
> does so as well if b modifies but does not commit then a should not see 
> b's data until commit.
>
> If this is what you mean then you need to set the isolation level on the 
> transaction that is making changes. Your reader does not need a 
> transaction..
>
> Steve
>
> -----Original Message-----
> From: Florin Manolache [mailto:florin@ecstend.com]
> Sent: Mon 7/11/2005 10:32 AM
> To: cbegin@ibatis.com
> Cc: user-java@ibatis.apache.org
> Subject: Re: How to set the connection read-only?
>
> In my read-only transactions, I read data from multiple tables, and I want 
> to get a consistent view (I don't want other transactions which are not 
> read-only to modify data between 2 reads from 2 different tables). Setting 
> the transaction read-only is supposed to give hints to the database/driver 
> that I am not modifying anything, so it can perform transactions 
> optimizations.
>
> Basically what I need to do is to get a reference to the current 
> connection being used by DAOs and sqlMap and call setReadOnly(true) on it.
>
> Thanks,
> Florin
>
>
>  ----- Original Message ----- 
>  From: Clinton Begin
>  To: user-java@ibatis.apache.org ; Florin Manolache
>  Sent: Saturday, July 09, 2005 11:59 PM
>  Subject: Re: How to set the connection read-only?
>
>
>
>  Florin,
>
>  I don't understand why you would do that.  If you have a connection 
> that's read-only, why would you need a transaction at all? (or vice versa)
>
>  Cheers,
>  Clinton
>
>
>
>  On 7/8/05, Florin Manolache <fl...@ecstend.com> wrote:
>
>    Is there a way to set the connection in the read-only state before 
> starting a transaction?
>    I'm using a mix of DAOs and sqlMaps in my application so I'm interested 
> in a solution for both of them.
>
>    Thanks,
>    Florin
>
>
>
>
>
> This e-mail and any attachment is for authorised use by the intended 
> recipient(s) only. It may contain proprietary material, confidential 
> information and/or be subject to legal privilege. It should not be copied, 
> disclosed to, retained or used by, any other party. If you are not an 
> intended recipient then please promptly delete this e-mail and any 
> attachment and all copies and inform the sender. Thank you.
>