Problema ao processar exceções com SimpleJdbcTemplate no Spring

0 respostas
M

Senhores, boa noite. Estou desenvolvendo um projetinho aqui em casa como forma de estudo do spring. Não estou utilizando nenhum framework de acesso a bd (hibernate, jpa, etc) primeiro porque não tenho conhecimento tão bom nisso pra começar do zero e também porque fico mais a vontade em fazer tudo na mão, do meu jeito assim posso ver como toh com sql.

Pelos motivos acima citados estou utilizando SimpleJdbcTemplate que é fornecido pelo Spring. De acordo com o site do spring, o spring traduz as exceções lancadas pelo jdbc e lança suas próprias exceções. Sendo assim fiz os seguintes testes: tentei violar uma chave única, inserir em uma tabela com um usuário sem direito a inserção e colocar um texto no local de um número. Nestes casos eu imaginei que o spring iria lançar respectivamente as exceções: DataIntegrityViolationException, PermissionDeniedDataAccessException e DataIntegrityViolationException mas para a minha surpresa eu obtive as seguintes exceções MySQLIntegrityConstraintViolationException, MySQLSyntaxErrorException e SQLException.

Gostaria de saber se vcs já fizeram algo parecido, se eu preciso fazer alguma configuração no meu xml para que o spring "traduza" as exceções ou se isso já é automático. Segue abaixo um trecho do meu xml:
<!-- Configuração de conexão com banco de dados via JDBC -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="url" value="jdbc:mysql://localhost/controlegastos"></property>
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="username" value="usuario"></property>
		<property name="password" value="senha"></property>
	</bean>
	
	<bean id="jdbcTemplate"
		class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
		<constructor-arg ref="dataSource" />
	</bean>
Segue o trecho do código que salva no banco
public void salvar(Usuario usuario) {		
		String sql = "INSERT INTO usuario (nome, sobrenome, apelido, senha) VALUES(?,?,?,?)";		
		template.update(sql, usuario.getNome(), usuario.getSobrenome(), usuario.getApelido(), usuario.getSenha());
	}
Estou usando a anotação @autowired para injetar um objeto SimpleJdbcTemplate (template) na classe.

Agradeço atenção de tdos.

Criado 29 de janeiro de 2012
Respostas 0
Participantes 1