Сервисные вызовы к нескольким методам dao - PullRequest
1 голос
/ 25 августа 2011

У меня есть класс обслуживания, такой как:

@Transactional
@Component(value = "userServiceImpl")
public class UserServiceImpl implements UserService
{
  @Autowired
  private UserDao             userDaoiBatis;

  public boolean X()
  {
    // Call UserDao.A and UserDao.B in transaction.
  }
}

и класс Dao, такой как:

@Transactional
@Component(value = "userDaoiBatis")
public class UserDaoiBatis extends SqlMapClientDaoSupport implements UserDao
{
  @Autowired
  private void injectSqlMapClient(SqlMapClient sqlMapClient)
  {
    setSqlMapClient(sqlMapClient);
  }

  @Override
  public boolean A()
  {
    throw new RuntimeException("Not implemented");
  }

  @Override
  public boolean B()
  {
    throw new RuntimeException("Not implemented");
  }
}

Как я могу вызвать UserDaoiBatis.A () и UserDaoiBatis.B () как часть транзакции в userServiceImpl.Z () ???

1 Ответ

2 голосов
/ 25 августа 2011

То, что у вас есть, выглядит правильно.Транзакция будет запущена UserServiceImpl, тогда оба вызова UserDaoiBatis унаследуют существующую транзакцию (@Transactional по умолчанию требует распространения REQUIRES).Вы можете подтвердить это, включив ведение журнала уровня отладки в классе AbstractPlatformTransactionManager.

Обратите внимание, что при A(), вызывающем исключение, tx выполнит откат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...