From: Clinton Begin <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: ibatis-user-java@incubator.apache.org, Brandon Goodin
<[EMAIL PROTECTED]>
Subject: Re: transactions
Date: Tue, 24 May 2005 13:40:04 -0600
Those update statements ARE in a transaction. But you should NEVER manage
transactions inside the DAO. The transaction in this case is taken care of
outside of the scope of this particular method (I believe in this case it
is
actually an automatic DAO transaction, so you might not find the calls to
start/commit/end).
So, what you mean is: I should make the transaction in my service layer, and
inside this transaction call the dao method. But if I change a method in my
DAO, to have multiple statements, I would also need to change my Service
class, to place the call in a transaction?
And how does one specify those automatic transactions?
Clinton
On 5/24/05, Brandon Goodin <[EMAIL PROTECTED]> wrote:
>
> Message was sent to me privately... so i am posting it to the list
> -----
> But for example, in the JPetStoreExample, in the AccountSqlMapDao, this
is
> a
> method:
>
> public void insertAccount(Account account) {
> update("insertAccount", account);
> update("insertProfile", account);
> update("insertSignon", account);
> }
>
> Aren't those different update statements better off in a transaction?
And
> why no different calls from the Service layer?
> I'm just trying to understand the difference.
>
> >From: Brandon Goodin <[EMAIL PROTECTED]>
> >Reply-To: Brandon Goodin <[EMAIL PROTECTED]>
> >To: ibatis-user-java@incubator.apache.org
> >Subject: Re: transactions
> >Date: Tue, 24 May 2005 12:45:59 -0600
> >
> >It is not neccessary to call transactions on only one statement.
> >
> >Transactions should be handled on the Service layer and make more
> >fine-grained calls to the DAO layer.
> >
> >Brandon
> >
> >On 5/24/05, Lieven De Keyzer <[EMAIL PROTECTED]> wrote:
> > > At http://www.reumann.net/struts/ibatisLesson1/step6.do
> > > this is an example in a ibatis/struts tutorial
> > >
> > > public int update(String statementName, Object parameterObject)
throws
> > > DaoException {
> > > int result = 0;
> > > try {
> > > sqlMap.startTransaction();
> > > result = sqlMap.executeUpdate(statementName, parameterObject);
> > > sqlMap.commitTransaction();
> > > } catch (SQLException e) {
> > > try {
> > > sqlMap.rollbackTransaction();
> > > } catch (SQLException ex) {
> > > throw new DaoException(ex.fillInStackTrace());
> > > }
> > > throw new DaoException(e.fillInStackTrace());
> > > }
> > > return result;
> > > }
> > >
> > > Is it necessary to have a transaction started for just 1 statement
> > > execution?
> > >
> > > Also, what's the better way? Doing a transaction in a Service class,
> >that
> > > has multiple DAO's, or doing it in the DAO class, doing different
> >statements
> > > in one method? Or is there no difference?
> > >
> > >
> > >
>