2番目のhibernate
にある 最初のHibernate では、Hibernateを使用する方法を説明します.SQLを使用しない場合、Javaでアイテムを操作する習慣でリポジトリにデータを挿入します.もちろん、データを保存した後、データをどのように読み出すかが重要です.HibernateではSQLを一言も書かずにJavaでアイテムを操作する習慣でデータを検索することもできます.例を直接見てみましょう. HibernateDemo.java
CriteriaはSQLをカプセル化しており、SQLをよく知らない開発者にとっては、Criteriaを使用しても各種データの検索が容易に行えます.また、Expressionを使用してクエリー条件を設定し、Criteriaに追加してクエリー結果を制限することもできます.Expression.eq()は、Expression.eq("name","caterpillar")などの条件に合ったクエリーを設定することを示します.クエリー条件が「name」の欄で「caterpillar」に設定されている資料を表します.まず、実行結果を見てみましょう.
Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_id name/age1 caterpillar/302 bush/20Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name=?id name/age1 caterpillar/30
Criteriaは物件案内式のクエリー方式で、SQLを知らない開発者も簡単にクエリーを行うことができますが、CriteriaのAPIはまだ完備していません.Hibernateが奨励するクエリー方式は、HQL(Hibernate Query Language)を通じて行い、直接例を見てみましょう. HibernateDemo.java
実行結果:
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_id name/age1 caterpillar/302 bush/20Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_ where user0_.name like ?id name/age1 caterpillar/30
Queryインタフェースを介して、クエリーパラメータを設定してからsetXXX()などの方法を通じて、指定したパラメータ値を入力して、毎回完全なHQLを書く必要はありません.QueryのsetParameter()メソッドの最初のパラメータは指定ですか?表示される場所は、0から2番目のパラメータがクエリー条件を設定します.
package onlyfun.caterpillar;
import java.util.Iterator;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Expression;
public class HibernateDemo {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(User.class);
// user
Iterator users = criteria.list().iterator();
System.out.println("id \t name/age");
while(users.hasNext()) {
User user = (User) users.next();
System.out.println(user.getId() +
" \t " + user.getName() +
"/" + user.getAge());
}
// user
criteria.add(Expression.eq("name", "caterpillar"));
users = criteria.list().iterator();
System.out.println("id \t name/age");
while(users.hasNext()) {
User user = (User) users.next();
System.out.println(user.getId() +
" \t " + user.getName() +
"/" + user.getAge());
}
session.close();
HibernateUtil.shutdown();
}
}
CriteriaはSQLをカプセル化しており、SQLをよく知らない開発者にとっては、Criteriaを使用しても各種データの検索が容易に行えます.また、Expressionを使用してクエリー条件を設定し、Criteriaに追加してクエリー結果を制限することもできます.Expression.eq()は、Expression.eq("name","caterpillar")などの条件に合ったクエリーを設定することを示します.クエリー条件が「name」の欄で「caterpillar」に設定されている資料を表します.まず、実行結果を見てみましょう.
Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_id name/age1 caterpillar/302 bush/20Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from T_USER this_ where this_.name=?id name/age1 caterpillar/30
Criteriaは物件案内式のクエリー方式で、SQLを知らない開発者も簡単にクエリーを行うことができますが、CriteriaのAPIはまだ完備していません.Hibernateが奨励するクエリー方式は、HQL(Hibernate Query Language)を通じて行い、直接例を見てみましょう.
package onlyfun.caterpillar;
import java.util.Iterator;
import org.hibernate.Query;
import org.hibernate.Session;
public class HibernateDemo {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
// HQL
Query query = session.createQuery("from User");
Iterator users = query.list().iterator();
System.out.println("id \t name/age");
while(users.hasNext()) {
User user = (User) users.next();
System.out.println(user.getId() +
" \t " + user.getName() +
"/" + user.getAge());
}
System.out.println();
// HQL
query = session.createQuery("from User user where user.name like ?");
//
query.setParameter(0, "caterpillar");
users = query.list().iterator();
System.out.println("id \t name/age");
while(users.hasNext()) {
User user = (User) users.next();
System.out.println(user.getId() +
" \t " + user.getName() +
"/" + user.getAge());
}
session.close();
HibernateUtil.shutdown();
}
}
実行結果:
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_id name/age1 caterpillar/302 bush/20Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from T_USER user0_ where user0_.name like ?id name/age1 caterpillar/30
Queryインタフェースを介して、クエリーパラメータを設定してからsetXXX()などの方法を通じて、指定したパラメータ値を入力して、毎回完全なHQLを書く必要はありません.QueryのsetParameter()メソッドの最初のパラメータは指定ですか?表示される場所は、0から2番目のパラメータがクエリー条件を設定します.