Re: use of savepoint in containter managed transaction - Mailing list pgsql-jdbc

From Andrew Hastie
Subject Re: use of savepoint in containter managed transaction
Date
Msg-id 4E7C7DD8.60600@ahastie.net
Whole thread Raw
In response to Re: use of savepoint in containter managed transaction  (Radosław Smogura <rsmogura@softperience.eu>)
List pgsql-jdbc
Agree that raising any form of checked exception in a container managed
transaction is simply very bad news. You could try changing over to
using bean managed transactions, but this will likely raise other issues
in how you application is structured.

Surely attempting to insert a record with a duplicate key is bad design?
Could you not do something like the following pseudo-code :-

ResultSet rs  = SELECT * FROM table WHERE pk = 'some_value';
if (rs.next())
{
     // Exists - go and insert into error table
}
else
{
    // Doesn't exist - insert in now
}
rs.close

My personal rule for anything JDBC related when running inside a JEE
container is "keep it simple and clean". That way you'll avoid numerous
problems if you ever have to port your application to another database
provider or even different JDBC driver.

Andrew

On 23/09/11 12:54, Radosław Smogura wrote:
> On Fri, 23 Sep 2011 06:31:13 +0000, Amar Dhole wrote:
>> HI All,
>>
>> I have requirement to use save point. But I am using session bean
>> whose transaction is managed by container. While executing sql insert
>> I got unique key constraint because of this my other command following
>> this exception got ignored. I want to continue my transaction even
>> after this as we ignore this insert and make an entry in other table
>> for this error. And proceed head. with Postgres this is not possible.
>> I cant user plsql block as behaviour is spread in all my application.
>> Need some suggestion to achieve this with savepoint.
>>
>> I have some question.
>> 1) Can I use savepoint in Container Managed transaction ?
> Yes, You can, but I don't know result of this. ;) One day I worked on
> couple of patches, maybe I have those somewhere to acquire this what I
> assume You want.
>
>> 2) Can I make some custom change to jdbc driver to ignore duplicate
>> key exception or to raise warning instead ERROR.
> I assume, You want your transaction to proceed when error will occur.
> Yes you can make some change to ignore this, but this will not give
> you expected behaviour, because error is generated on server side, and
> server will rollback transaction.
>
> But please specify more details mainly what You want achieve and what
> are preconditions.
>> Thanks
>> Amar
>
> Regards,
> Radosław Smogura
> http://softperience.eu
>

pgsql-jdbc by date:

Previous
From: Amar Dhole
Date:
Subject: Re: use of savepoint in containter managed transaction
Next
From: Dave Cramer
Date:
Subject: Re: Prepared statement with function as argument: how to bind values?