[Spring] Acessando BD desnecessariamente

Pessoal, é normal o Spring ir no banco varias vezes antes da chamada e depois da chamado do meu método DAO?
Esta acontecendo o seguinte comigo, eu tenho a classe abaixo e cada vez que uso o objeto Pessoa ele vai e executa um select * from pessoa e um select max(id) from pessoa.

public class IniciaUsandoSpring { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:config/applicationContext.xml"); PessoaDAO pessoaDao = (PessoaDAOImpl) ctx.getBean("pessoaDAOImpl"); Pessoa pessoa = new Pessoa(); pessoa.setEndereco("Rua Enderenco"); pessoa.setId(pessoaDao.lastId()); ********* pessoa.setNome("Alexandre Ferreira"); pessoaDao.savePessoa(pessoa); **********

Coloquei os ( ********** ) para destacar o uso do meu DAO.
Eu ligo o Debug e vejo que em cada linha que o Step Over do Debug passa ele executa o pessoaDao.lastId() e o pessoaDao.getPessoas(), perceba que esse getPessoas() não esta no codigo.
Resolvi comentar tudo quera pessoaDao, e o mesmo sempre faz uma nova consulta sempre que dou Step Over …
é normal?

Bem, o Spring não tem muito costume de acessar bancos de dados não, mas suponho que você esteja usando o Hibernate, cadê a configuração dessa classe e como está a implementação desse seu PessoaDaoImpl?

Outra coisa, porque você está fazendo cast pra PessoaDaoImpl? A idéia de usar interfaces não é exatamente evitar acessar as classes concretas diretamente não?

Estou usando Ibatis.
Segue abaixo a PessoaDaoImpl:

[code]public class PessoaDAOImpl extends SqlMapClientDaoSupport implements PessoaDAO {

@SuppressWarnings("unchecked")
public List<Pessoa> getPessoas() {
	logger.info(">> getPessoas");
	List<Pessoa> pessoas = null;
	try {
		pessoas = (List<Pessoa>)super.getSqlMapClientTemplate().queryForList("getPessoas");
	} catch (DataAccessException e) {
		e.printStackTrace();
	}
	logger.info("<< getPessoas");
	return pessoas;
}

public void savePessoa(Pessoa pessoa) {
	logger.info(">> savePessoa");
	try {
		super.getSqlMapClientTemplate().insert("savePessoa", pessoa);
	} catch (DataAccessException e) {
		e.printStackTrace();
	}
	logger.info("<< savePessoa");
}

public Integer lastId() {
	logger.info(">> lastId");
	Integer lastId = null;
	try {
		lastId = (Integer) super.getSqlMapClientTemplate().queryForObject("pessoaLastId");
	} catch (DataAccessException e) {
		e.printStackTrace();
	}
	if (lastId == null) {
		lastId = 1;
	} else {
		lastId++;
	}
	logger.info("<< lastId");
	return lastId;
}

}
[/code]

Sobre o cast, eu comi mosca mesmo…rs