Comment appeler une procédure stockée dans Hibernate
Dans ce didacticiel, vous apprendrez à appeler une procédure de magasin dans Hibernate.
Procédure de stockage MySQL
Voici une procédure de magasin MySQL, qui accepte un paramètre de code boursier et renvoie les données boursières associées.
DELIMITER $$ CREATE PROCEDURE `GetStocks`(int_stockcode varchar(20)) BEGIN SELECT * FROM stock where stock_code = int_stockcode; END $$ DELIMITER ;
Dans MySQL, vous pouvez simplement l'appeler avec un mot-clécall:
CALL GetStocks('7277');
Procédure de stockage des appels Hibernate
Dans Hibernate, il existe trois approches pour appeler une procédure de stockage de base de données.
1. SQL natif - createSQLQuery
Vous pouvez utilisercreateSQLQuery() pour appeler directement une procédure de stockage.
Query query = session.createSQLQuery( "CALL GetStocks(:stockCode)") .addEntity(Stock.class) .setParameter("stockCode", "7277"); List result = query.list(); for(int i=0; i
2. NamedNativeQuery dans l'annotation
Déclarez votre procédure de magasin dans l'annotation@NamedNativeQueries.
//Stock.java ... @NamedNativeQueries({ @NamedNativeQuery( name = "callStockStoreProcedure", query = "CALL GetStocks(:stockCode)", resultClass = Stock.class ) }) @Entity @Table(name = "stock") public class Stock implements java.io.Serializable { ...
Appelez-le avecgetNamedQuery().
Query query = session.getNamedQuery("callStockStoreProcedure") .setParameter("stockCode", "7277"); List result = query.list(); for(int i=0; i
3. requête sql dans le fichier de mappage XML
Déclarez votre procédure de magasin dans la balise "sql-query".
......
Appelez-le avecgetNamedQuery().
Query query = session.getNamedQuery("callStockStoreProcedure") .setParameter("stockCode", "7277"); List result = query.list(); for(int i=0; i
Conclusion
Les trois approches ci-dessus font la même chose, appelez une procédure de stockage dans la base de données. Il n'y a pas beaucoup de différence entre les trois approches, la méthode que vous choisissez dépend de vos préférences personnelles.