Certifique-se de que seu DAO esteja envolvido em uma transação (por exemplo, usando Interceptors for Transactions do Spring). A mesma conexão será então usada para ambas as chamadas.
Melhor ainda seria ter as transações um nível mais alto, na camada de serviço.
Documentação:http://static .springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html
Atualização: Se você der uma olhada no JavaDoc do
DataSourceUtils.getConnection()
método que você referenciou em sua atualização, você verá que ele obtém a conexão associada ao thread atual:De acordo com isso, ele deve funcionar como você o configurou. Eu usei esse padrão muitas vezes e nunca tive problemas como você descreveu ...
Por favor, dê uma olhada neste tópico, alguém estava lidando com problemas semelhantes lá:Transações declarativas Spring Jdbc criadas, mas não fazendo nada