Senhores,
Estou trabalhando em um servidor socket que deve atender requisições e interagir com um banco mysql.
Minha dúvida é a seguinte. Como a grande maioria das requisições trata apenas de SELECTs, pensei em manter uma única conexão para atender essas requisições onde vinculadas a essa conexão estariam uma lista de objetos PreparedStatement.
O objetivo principal dessa ideia é ganhar performance na resposta da requisição considerando que o statement do sql já teria sido executado parcialmente no banco.
Pensei em fazer algo assim:
[code]public class Conexao {
private String DRIVER = "com.mysql.jdbc.Driver";
private String URL = "jdbc:mysql://127.0.0.1/servidor";
private String USERNAME = "root";
private String PASSWORD = "root";
private Connection conn;
private HashMap<String, PreparedStatement> lsPrepared = new HashMap<String, PreparedStatement>();
public Conexao() {
try {
Class.forName(this.DRIVER);
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (CommunicationsException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void addStatement(String chaveBusca, String sql) throws SQLException {
lsPrepared.put(chaveBusca, conn.prepareStatement(sql));
}
public PreparedStatement getStatement(String chaveBusca) {
return lsPrepared.get(chaveBusca);
}
}[/code]
No lugar do HashMap pensei em usar o FastHashMap oferecido pelo http://commons.apache.org/collections/ e carregar logo que startar o servidor todos os preparedStatements.