Hibernate HQL入門その1 - HQLの基本的な書き方及びその利用方法
2008/09/12 21:20Update
Hibernate HQLの基本的な書き方について学びます。
HQLとは
HQLとはHibernate Query Languageの略で、SQLに似たような強力なデータベースの問い合わせ言語です。とは言え、HQLはSQLと全く違う言語であることをよく理解してください。HQL自体は完全にオブジェクト指向であり、継承、ポリモーフィック、関連などの概念があります。
HQLの書き方(概要)
■HQL基本的な書き方1:基本(FROM)
FROM Order
FROM Order AS o
FROM Order o
SELECT o FROM Order o
■HQL基本的な書き方2:条件式(WHERE)
FROM Order WHERE id=:id
※ :idはクエリのダイナミックパラメータです。クエリを実行する前に、パラメータ:idを設定する必要があります。
FROM Order AS o WHERE o.id='1'
■HQL基本的な書き方3:指定する項目を取出す(SELECT ... FROM ... WHERE ...)
SELECT id, name FROM Order
SELECT o.id as orderId, o.name as orderName,
p.id as productId, p.name as productName
FROM Order o, Product p
WHERE o.id=:oid AND o.productId = p.id
■HQL基本的な書き方4:関連性のある複数のオブジェクト(SELECT ..., ... FROM ..., ..., WHERE ...)
FROM Order o, Product p WHERE o.id=:oid AND o.productId = p.id
※OrderやProductはJavaクラス名です。「パッケージ名」を省略したクラス名は、Hibernate(hibernate.cfg.xmlなどにより)に登録する必要があります。また、「パッケージ名・クラス名」の形でも指定できます。
※o.idやo.productIdなどはクラスのプロパティ名です。
※HQLはJavaクラス名とクラスのプロパティを除いて大文字、小文字を区別しません。即ち、Orderはorderとは違い、o.idはo.IDとも違います。しかし、selectはSELECTとは同じです。
HQLの利用方法
■方法1:HQLをソースの中で直接書く
例:
Javaコード
List list = session.createQuery("FROM Order").list();
■方法2:HQLを外部XMLにて定義する
Query.hbm.xml(クエリ定義ファイル)<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <query name="OrderDao.getOrderListById"> <![CDATA[ FROM Order WHERE id=:id ]]> </query> </hibernate-mapping>
Javaコード
OrderDao.Java//クエリの名前からQueryを取得する
Query query = session.getNamedQuery("OrderDao.getOrderListById");
//パラメータを設定する
query.setString("id", "1");
//問い合わせ
List list = query.list();
hibernate.cfg.xml... <mapping resource="Query.hbm.xml"/>
Sponsored Link
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate の開発手順 - (2008/07/24 12:44)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)