Bom dia!
Estou desenvolvendo uma aplicação com Spring MVC e estou querendo eliminar o fator de abrir e fechar um conexão com banco de dados todas vez que executo um query.
Cheguei a ver esse tipo de conexão usando filter no curso da caelum, porém foi antes de usar o Spring e como lí alguns artigos sobre o Spring Security gostaria de saber se posso usá-lo pra fazer essa função de conectar e desconectar sozinho do banco, sem ter que ficar chamando o connection.close.
Mesmo lendo artigos sobre o Spring Security não ficou muito claro sua implementação para este uso, todos que ví davam o exemplo configurado para fazer autenticação de acesso dos usuários.
Segue um exemplo de como estou usando hoje, se puderem me dar um luz de como chamar esse recurso no código ficarei muito grato.
ConnectionFactory
public class ConnectionFactory {
public Connection getConnection() {
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost/press", "root", "");
} catch (SQLException e) {
throw new RuntimeException(e);
System.out.println("abriu a conexão");//Mensagem para debug
}
PecaDao[code]
package br.com.press.produtividade.DAO;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.press.factory.ConnectionFactory;
import br.com.press.produtividade.model.Peca;
public class PecaDAO {
private final Connection connection;
public PecaDAO() {
try {
this.connection = new ConnectionFactory().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public List<Peca> selecionaPeca(Peca peca, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
try {
if(request.getParameter("q")==""){
// System.out.println("Peça não selecionada");
}
List<Peca> pecas = new ArrayList<Peca>();
String sql = "select * from pecas where nome like ? ";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1,("%"+request.getParameter("q")+"%"));
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
pecas.add(populaPecas(rs));
}
rs.close();
stmt.close();
connection.close();
System.out.println("fechou a conexão da peça");//Mensagem para Debug
return pecas;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
private Peca populaPecas(ResultSet rs) throws SQLException {
Peca peca = new Peca();
// popula o objeto Pecas
peca.setIdPeca(rs.getInt("id_peca"));
peca.setNomePeca(rs.getString("nome"));
return peca;
}
}
[/code]
PecasController
[code]
package br.com.press.produtividade.Controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import br.com.press.produtividade.DAO.PecaDAO;
import br.com.press.produtividade.model.Peca;
@Controller
public class PecasController {
@RequestMapping("/ObjetoPecas")
public String mostraPeca(Peca peca, Model model, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PecaDAO dao = new PecaDAO();
model.addAttribute(“pecas”, dao.selecionaPeca(peca, request, response));
return “ObjetoPecas”;
}
}[/code]
Obrigado!
Ailton