package com.rxtc.bi.app.crm.rep.dao.impl ;
importer java.sql.CallableStatement ;
importer java.sql.Connection ;
importer java.sql.ResultSet ;
importer java.sql.SQLException ;
importer javax.sql.DataSource ;
importer org.springframework.orm.hibernate3.SessionFactoryUtils ;
importer org.springframework.orm.hibernate3.support.HibernateDaoSupport ;
/**
*
* <pré>
* Titre : Utilisation des procédures stockées en veille prolongée
* Il suffit de contourner hibernate et d'appeler l'API jdbc. Bien entendu, la transaction est toujours gérée par hibernate :
Supposons que nous créions la procédure stockée suivante :
créer ou remplacer la procédure batchUpdateCustomer(p_age en nombre) comme
commencer
mettre à jour les CLIENTS définir AGE=AGE+1 où AGE> p_age ;
fin;
Il existe un paramètre p_age dans la procédure stockée, qui représente l'âge du client. L'application peut appeler la procédure stockée de la manière suivante :
* Description : Description des fonctions du programme
* </pre>
* @auteur lichunmei [email protected]
* @version 1.00.00
* <pré>
* Modifier les enregistrements
*Version modifiée : Modificateur : Date de modification : Contenu de la modification :
* </pre>
*/
Le texte de classe publique étend HibernateDaoSupport {
procédure publique vide(){
essayer {
DataSource ds= SessionFactoryUtils.getDataSource(getSessionFactory());
Connexion conn=ds.getConnection();
String sql = "{call batchUpdateCustomer(?)}" ;
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setInt(1, 0);//Définir le paramètre age sur 0;
cstmt.executeUpdate();
//ResultSet rs = cstmt.executeQuery(sql); en cas de requête
conn.commit();
//rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Cet article provient du blog CSDN Veuillez indiquer la source lors de la réimpression : http://blog.csdn.net/xixi_666/archive/2009/12/18/5029768.aspx.
-