Performance entre spring et jdbc
Bonjour,
Je ne sais pas si c'est le bon forum pour ce post, veuillez le deplacer si ceci n'a pas sa place dans ce forum.
On a une/des fonctions font des extractions de BD dont une est ci-dessous
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
public Object execute(final Connection connection, String storedProcedureName, String city, String country, String postCode) {
List<Object> result = new LinkedList<Object>();
CallableStatement cst = null;
ResultSet rs = null;
try {
cst = connection.prepareCall(storedProcedure);
cst.setString(1, city);
cst.setString(2, country);
cst.setString(3, postCode);
rs = cst.executeQuery();
while (rs.next()) {
StringBuffer sb = new StringBuffer();
sb
.append(rs.getString("Name")).append("\n")
.append(rs.getString("Adress")).append("\n")
.append(rs.getString("PostCode")).append("\n")
.append(rs.getString("Phone")).append("\n")
.append(rs.getString("Email")).append("\n");
result.add(sb.toString());
}
} catch (Exception e) {
System.err.println("Erreur " + e.getMessage());
} finally {
try {
cst.close();
} catch (Exception e) {
try {
rs.close();
} catch (Exception e) {
}
return result;
} |
Je souhaite les migrer en utilisant Spring jdbc, au lieu d'appeler la fonction
Code:
1 2
|
execute(connection, storedProcedureName, city, country, postCode) |
J'utilise celle-ci
Code:
1 2
|
execute(city, country, postCode) |
Par contre, au point de vue de performance auriez-vous une idee laquelle est
meuilleure
Merci d'avance
Classes Spring pour jdbc
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public class MyStoredProcedure extends StoredProcedure {
public MyStoredProcedure(DataSource dataSource, String storedProcedureName) {
super(dataSource, storedProcedureName);
declareParameter(new SqlReturnResultSet("rs", new MyMapper()));
declareParameter(new SqlParameter("City", Types.VARCHAR));
declareParameter(new SqlParameter("Country", Types.VARCHAR));
declareParameter(new SqlParameter("PostCode", Types.VARCHAR));
compile();
}
public Map execute(String city, String country, String postCode) }
Map inputs = new HashMap();
inputs.put("City", city);
inputs.put("Country", country);
inputs.put("PostCode", postCode);
return super.execute(inputs);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class MyMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
StringBuffer sb = new StringBuffer();
sb
.append(rs.getString("Name")).append("\n")
.append(rs.getString("Adress")).append("\n")
.append(rs.getString("PostCode")).append("\n")
.append(rs.getString("Phone")).append("\n")
.append(rs.getString("Email")).append("\n");
return sb.toString();
}
} |