Exemples de requêtes Hibernate (HQL)
Hibernate a créé un nouveau langage nommé Hibernate Query Language (HQL), la syntaxe est assez similaire au langage SQL de base de données. La principale différence entre estHQL uses class name instead of table name, and property names instead of column name.
HQL est extrêmement simple à apprendre et à utiliser, et le code est toujours explicite.
1. Exemple de requête de sélection HQL
Récupérez une donnée de stock où le code de stock est «7277».
Query query = session.createQuery("from Stock where stockCode = :code "); query.setParameter("code", "7277"); List list = query.list();
Query query = session.createQuery("from Stock where stockCode = '7277' "); List list = query.list();
2. Exemple de requête de mise à jour HQL
Mettez à jour un nom de stock en «DIALOG1» où le code de stock est «7277».
Query query = session.createQuery("update Stock set stockName = :stockName" + " where stockCode = :stockCode"); query.setParameter("stockName", "DIALOG1"); query.setParameter("stockCode", "7277"); int result = query.executeUpdate();
Query query = session.createQuery("update Stock set stockName = 'DIALOG2'" + " where stockCode = '7277'"); int result = query.executeUpdate();
3. Exemple de requête de suppression HQL
Supprimer un stock dont le code stock est «7277».
Query query = session.createQuery("delete Stock where stockCode = :stockCode"); query.setParameter("stockCode", "7277"); int result = query.executeUpdate();
Query query = session.createQuery("delete Stock where stockCode = '7277'"); int result = query.executeUpdate();
4. Exemple de requête d'insertion HQL
Dans HQL, seul INSERT INTO… SELECT… est pris en charge; il n'y a pas d'insertion dans… les valeurs. HQL ne prend en charge que l'insertion à partir d'une autre table. Par exemple
"insert into Object (id, name) select oo.id, oo.name from OtherObject oo";
Insérez un enregistrement de stock d'une autre table backup_stock. Cela peut également être appelé instruction d'insertion en bloc.
Query query = session.createQuery("insert into Stock(stock_code, stock_name)" + "select stock_code, stock_name from backup_stock"); int result = query.executeUpdate();
Lesquery.executeUpdate() renverront le nombre d'enregistrements insérés, mis à jour ou supprimés.