ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hernan gonzalez <hgonza...@gmail.com>
Subject Re: Adding programable transactions to a Spring/Ibatis setup?
Date Mon, 08 Jun 2009 16:50:22 GMT
I copy below my stripped code/configuration for programmatic
transactions with ibatis+spring .

Bear in mind that (besides the ugly static methods) this setup is
rather limited,
I assume my beginTransation() always joins the outer transaction, if it exists.
Besides, in a web-app environment, it would be good idea (to prevent
bugs with unfinished transactions) to collect the obtained
PlatformTransactionManager objects in a threadlocal variable, and do
some checking-cleaning-debugging at the ending of the thread (with a

------------  spring.xml:

<bean id="txManager"
 <property name="dataSource" ref="myDataSource" />

<bean id="sqlMapClient"
 <property name="configLocation"><value>classpath:SqlMapConfig.xml</value></property>
 <property name="useTransactionAwareDataSource"><value>true</value></property>
 <property name="dataSource"><ref bean="myDataSource" /></property>

------------ and some static methods in DbUtil class

public static TransactionStatus beginTransaction() {
 PlatformTransactionManager txMan = getTxManager();
 TransactionStatus status =
 //TransactionsThreadLocal.add(status); // collect for bookkeeping /
cleaning in filter
 return status;

public static void commit(TransactionStatus status) {

public static void rollback(TransactionStatus status) {

private static DefaultTransactionDefinition getDefaultTransactionDefinition() {
 DefaultTransactionDefinition td = new DefaultTransactionDefinition();
 return td;


Then your code you do something like

TransactionStatus tx = Db.beginTransaction();
try {
       ... do something
     } catch(Exception e) {
	 throw e;

Hope this helps
Best regards

Hernán J. González

On Mon, Jun 8, 2009 at 1:22 PM, Gwyn Evans<gwyn.evans@gmail.com> wrote:
> Hi,
> Does anyone have any guides for adding programmable transactions to a
> Spring/Ibatis setup?
> I've got my 'normal' setup using Spring, Ibatis & whatever you get if
> you don't explicitly configure any transactional behavior.  That's
> been working fine, but I've got one method that's going to need to do
> a block of inserts & I'd like to avoid loading them in as single
> transactions, so I was looking to see what the options might be.  I'm
> not sure that I'd be able to add AOP support, so was looking at
> programmable transactions but I've not been able to really work out
> what's needed in the config.xml and/or the sqlMapConfig.xml order to
> add them for the one method - can anyone provide some help/pointers,
> please!
> /Gwyn

View raw message