Hibernate Queryの例(HQL)
HibernateはHibernate Query Language(HQL)という名前の新しい言語を作成しました。構文はデータベースSQL言語に非常に似ています。 の主な違いはHQL uses class name instead of table name, and property names instead of column nameです。
HQLの学習と使用は非常に簡単であり、コードは常に一目瞭然です。
1. HQL選択クエリの例
在庫コードが「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. HQL更新クエリの例
銘柄名を「DIALOG1」に更新します。ここで、銘柄コードは「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. HQL削除クエリの例
在庫コードが「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. HQL挿入クエリの例
HQLでは、INSERT INTO…SELECT…のみがサポートされています。 INSERT INTO…VALUESはありません。 HQLは、別のテーブルからの挿入のみをサポートします。 例えば
"insert into Object (id, name) select oo.id, oo.name from OtherObject oo";
別のbackup_stockテーブルから在庫レコードを挿入します。 これは、一括挿入ステートメントとも呼ばれます。
Query query = session.createQuery("insert into Stock(stock_code, stock_name)" + "select stock_code, stock_name from backup_stock"); int result = query.executeUpdate();
query.executeUpdate()は、挿入、更新、または削除されたレコードの数を返します。