Spring JDBC Modèle pour l'appel de Procédures Stockées

Quelle est la bonne manière pour appeler des procédures stockées à l'aide de jour moderne (vers 2012) Spring JDBC Modèle?

Dire, j'ai une procédure stockée qui déclare deux IN et OUT paramètres, quelque chose comme ceci:

mypkg.doSomething(
    id OUT int,
    name IN String,
    date IN Date
)

Je suis venu à travers CallableStatementCreator des approches fondées sur où nous avons à inscrire explicitement IN et OUT paramètres. Considérons la méthode suivante dans JdbcTemplate classe:

public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)

Bien sûr, je sais que je peux l'utiliser comme ça:

List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>();

declaredParameters.add(new SqlOutParameter("id", Types.INTEGER));
declaredParameters.add(new SqlParameter("name", Types.VARCHAR));
declaredParameters.add(new SqlParameter("date", Types.DATE));

this.jdbcTemplate.call(new CallableStatementCreator() {

    @Override
    CallableStatement createCallableStatement(Connection con) throws SQLException {
        CallableStatement stmnt = con.createCall("{mypkg.doSomething(?, ?, ?)}");

        stmnt.registerOutParameter("id", Types.INTEGER);
        stmnt.setString("name", "<name>");
        stmnt.setDate("date", <date>);

        return stmnt;
    }
}, declaredParameters);

Quel est le but de declaredParameters quand je suis déjà en les enregistrant dans mon csc mise en œuvre? En d'autres termes, pourquoi aurais-je besoin de passer dans un csc quand le printemps peut tout simplement con.prepareCall(sql) en interne? Fondamentalement, je ne peux pas passer dans l'un d'eux au lieu de deux?

Ou, est-il une bien meilleure façon d'appeler des procédures stockées (à l'aide de Spring JDBC Modèle) que ce que j'ai pu rencontrer jusqu'à présent?

Remarque: Vous pouvez trouver bon nombre de questions qui semblent avoir un titre similaire, mais ils ne sont pas les mêmes que celui-ci.

  • Je peux voir que cette question est très populaire aujourd'hui et il a déjà plus de 2 ans que cela a été demandé. Si quelqu'un pense qu'il y a encore de mieux que d'appeler des procédures stockées maintenant que le Printemps 4 est sorti, merci de poster une réponse ou suggérer une modification.
InformationsquelleAutor adarshr | 2012-02-20