sb.append("id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ("); sb.append("START WITH 1, INCREMENT BY 1),"); sb.append(" nome VARCHAR(50),"); sb.append(" CONSTRAINT primary_key PRIMARY KEY (id))"); try { jdbcTemplate.execute(sb.toString()); insert(new Pessoa("Jabes Felipe")); } catch (DataAccessException e) { // jdbcTemplate.execute("drop table autor "); e.printStackTrace(); } } @Override public void insert(Pessoa pessoa) { jdbcTemplate.update("INSERT INTO pessoa (nome) VALUES (?) ", new Object[]{pessoa.getNome()}); } @SuppressWarnings("unchecked") @Override public List<Pessoa> select() { List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT id, nome FROM pessoa"); List<Pessoa> pessoas = new ArrayList<Pessoa>(list.size()); for (Map<String, Object> map : list) { Pessoa pessoa = new Pessoa(); pessoa.setId(Integer.parseInt(map.get("ID").toString())); pessoa.setNome(map.get("NOME").toString()); pessoas.add(pessoa); } return pessoas; } @Override public void delete(int id) { jdbcTemplate.update("DELETE FROM pessoa WHERE id=?", new Object[]{id}); } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } } PessoaDAOImp.java4. Passo: Vamos criar a camada de servico, definimos a Interface. package service; import java.util.List; import model.Pessoa; public interface PessoaService { void insert(Pessoa pessoa); List<Pessoa> select(); void delete(int id); } PessoaService.java5. Passo: Classe que implementa a Interface de servico, vale apena ressaltar, que a referencia PessoaDAO que um atributo pessoaDAO, sera injetado pelo Spring atraves do metodo Setter que criamos. package service; import java.util.List; import model.Pessoa; import dao.PessoaDAO; public class PessoaServiceImp implements PessoaService { private PessoaDAO pessoaDAO; @Override public void insert(Pessoa pessoa) { pessoaDAO.insert(pessoa); } @Override public List<Pessoa> select() { return pessoaDAO.select(); } @Override public void delete(int id) { pessoaDAO.delete(id); } public void setPessoaDAO(PessoaDAO pessoaDAO) { this.pessoaDAO = pessoaDAO; } } PessoaServiceImp.java6. Passo: Ja criamos nossa camada de persistencia e de servico, agora vamos criar um Servlet que sera nosso controller da camada de tela e servico. package servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.Pessoa; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.context.support.SpringBeanAutowiringSupport; import service.PessoaService; import service.PessoaServiceImp; public class PessoaServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Autowired private PessoaService pessoaService; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); String acao = request.getParameter("acao"); if ("salvar".equals(acao)) { Pessoa pessoa = new Pessoa(); pessoa.setNome(request.getParameter("nome")); pessoaService.insert(pessoa); } else if ("excluir".equals(acao)) { int id = Integer.parseInt(request.getParameter("id")); pessoaService.delete(id); } request.setAttribute("pessoas", pessoaService.select()); getServletConfig().getServletContext().getRequestDispatcher("/home.jsp").forward(request,response); } public void setAutorService(PessoaServiceImp pessoaService) { this.pessoaService = pessoaService; } } PessoaServlet.java7. Passo: Agora vamos configurar as definicoes necessarias do Spring no arquivo web.xml. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Spring</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Define os arquivos de configuracoes XML para o contexto Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!-- Inicializa o Spring Web Application Context --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Ativa os escopos web para os beans no Spring --> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <servlet> <description></description> <display-name>PessoaServlet</display-name> <servlet-name>PessoaServlet</servlet-name> <servlet-class>servlets.PessoaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>PessoaServlet</servlet-name> <url-pattern>/PessoaServlet</url-pattern> </servlet-mapping> </web-app> web.xml8. Passo: Agora chegou, a parte mais importante, que e o arquivo de configuracao dos beans, contexto e datasource do Spring. Neste arquivo esta configurado o Data Source que contem as informacoes do banco, o jdbcTemplate que contem uma referencia ao dataSource, tambem configuramos os properties do banco e por fim, temos a definicao de pessoaDAO e pessoaService. <?xml version="1.0" encoding="UTF-8"?> <!-- - Application context definition for JPetStore's business layer. - Contains bean references to the transaction manager and to the DAOs in -