- Modelo Spring JDBC
- Compreendendo a necessidade do modelo Spring JDBC
- Vantagem do modelo Spring JDBC
- Classes de modelo JDBC
- Exemplo de classe JdbcTemplate
Primavera Modelo Jdbc é um mecanismo poderoso para conectar-se ao banco de dados e executar consultas SQL. Ele usa API JDBC internamente, mas elimina muitos problemas da API JDBC.
Problemas da API JDBC
Os problemas da API JDBC são os seguintes:
- Precisamos escrever muito código antes e depois de executar a consulta, como criar conexão, instrução, fechar conjunto de resultados, conexão etc.
- Precisamos executar o código de tratamento de exceções na lógica do banco de dados.
- Precisamos lidar com a transação.
- A repetição de todos esses códigos de uma lógica de banco de dados para outra é uma tarefa demorada.
Vantagem do Spring JdbcTemplate
Spring JdbcTemplate elimina todos os problemas mencionados acima da API JDBC. Ele fornece métodos para escrever as consultas diretamente, economizando muito trabalho e tempo.
Abordagens Spring Jdbc
A estrutura Spring fornece as seguintes abordagens para acesso ao banco de dados JDBC:
- Modelo Jdbc
- NamedParameterJdbcTemplate
- Modelo SimpleJdbc
- SimpleJdbcInsert e SimpleJdbcCall
Classe JdbcTemplate
É a classe central nas classes de suporte Spring JDBC. Ele cuida da criação e liberação de recursos como criação e fechamento de objeto de conexão etc. Portanto, não causará nenhum problema se você esquecer de fechar a conexão.
Ele trata a exceção e fornece mensagens informativas de exceção com a ajuda de classes de exceção definidas no org.springframework.dao pacote.
Podemos realizar todas as operações do banco de dados com a ajuda da classe JdbcTemplate, como inserção, atualização, exclusão e recuperação dos dados do banco de dados.
Vamos ver os métodos da classe Spring JdbcTemplate.
Não. | Método | Descrição |
---|---|---|
1) | atualização int pública (consulta de string) | é usado para inserir, atualizar e excluir registros. |
2) | atualização int pública (consulta de string, objeto... args) | é usado para inserir, atualizar e excluir registros usando PreparedStatement usando determinados argumentos. |
3) | execução pública void (consulta de string) | é usado para executar a consulta DDL. |
4) | public T execute (String sql, ação PreparedStatementCallback) | executa a consulta usando o retorno de chamada PreparedStatement. |
5) | consulta T pública (String sql, ResultSetExtractor rse) | é usado para buscar registros usando ResultSetExtractor. |
6) | consulta de lista pública (String sql, RowMapper rse) | é usado para buscar registros usando RowMapper. |
Exemplo de Spring JdbcTemplate
Presumimos que você criou a tabela a seguir dentro do banco de dados Oracle10g.
create table employee( id number(10), name varchar2(100), salary number(10) );Funcionário.java
Esta classe contém 3 propriedades com construtores e setter e getters.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }FuncionárioDao.java
Ele contém uma propriedade jdbcTemplate e três métodos saveEmployee(), updateEmployee e deleteEmployee().
package com.javatpoint; import org.springframework.jdbc.core.JdbcTemplate; public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int saveEmployee(Employee e){ String query='insert into employee values( ''+e.getId()+'',''+e.getName()+'',''+e.getSalary()+'')'; return jdbcTemplate.update(query); } public int updateEmployee(Employee e){ String query='update employee set name=''+e.getName()+'',salary=''+e.getSalary()+'' where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } public int deleteEmployee(Employee e){ String query='delete from employee where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } }aplicaçãoContext.xml
O DriverManagerDataSource é usado para conter informações sobre o banco de dados, como nome da classe do driver, URL de conexão, nome de usuário e senha.
Há uma propriedade chamada fonte de dados na classe JdbcTemplate do tipo DriverManagerDataSource. Portanto, precisamos fornecer a referência do objeto DriverManagerDataSource na classe JdbcTemplate para a propriedade datasource.
Aqui, estamos usando o objeto JdbcTemplate na classe EmployeeDao, então estamos passando-o pelo método setter, mas você também pode usar o construtor.
Teste.java
Esta classe obtém o bean do arquivo applicationContext.xml e chama o método saveEmployee(). Você também pode chamar os métodos updateEmployee() e deleteEmployee() descomentando o código também.
package com.javatpoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext('applicationContext.xml'); EmployeeDao dao=(EmployeeDao)ctx.getBean('edao'); int status=dao.saveEmployee(new Employee(102,'Amit',35000)); System.out.println(status); /*int status=dao.updateEmployee(new Employee(102,'Sonoo',15000)); System.out.println(status); */ /*Employee e=new Employee(); e.setId(102); int status=dao.deleteEmployee(e); System.out.println(status);*/ } }baixe este exemplo (desenvolvido usando MyEclipse IDE)
baixe este exemplo (desenvolvido usando Eclipse IDE)