hibernateの2種類のクエリーとページング
2081 ワード
久しぶりにhibernateを使って開発して、多くのものが少し疎遠になりました.今日ふと思いついたついでに自分で復習して、hibernateはやはり便利だと思って、少なくとも彼は統一的なページを提供しました.開発はデータベースを交換するために大量のコードを修正することはありません.
hibernateのクエリーには、hqlクエリー、Criteriaクエリーの2種類があります.2種類とも使いやすいと思います
1.hqlのパラメータ付きクエリーには、インデックスを使用しない小さなテクニックがあります.
上のこれは原始的な書き方で、もう一つもっと使いやすいのは疑問符の場所を :パラメータの名前 ,これで順番を間違えるのを恐れる必要はありません.
2.Criteriaを使用してデータを照会する方法はhql文を書く必要がなく、個人的には簡単にこの方法を使うのも十分だと思います.Restrictionsにはorなど多くのクエリー条件があり、inには対応するサポートがあります.
同じクエリーの単一データもgetメソッドを使うことができます.自分でやってみてください.次のページの面接でよく聞かれますが、メモに重点を置いてください.
hibernateのクエリーには、hqlクエリー、Criteriaクエリーの2種類があります.2種類とも使いやすいと思います
1.hqlのパラメータ付きクエリーには、インデックスを使用しない小さなテクニックがあります.
Query q=session.createQuery("update StudentInfo set username=? where fid=?");
q.setString(0, " ");
q.setInteger(1, 3);
上のこれは原始的な書き方で、もう一つもっと使いやすいのは疑問符の場所を :パラメータの名前 ,これで順番を間違えるのを恐れる必要はありません.
Query q=session.createQuery("update StudentInfo set username=:username where fid=:fid");
q.setString("username", " ");
q.setInteger("fid", 3);
2.Criteriaを使用してデータを照会する方法はhql文を書く必要がなく、個人的には簡単にこの方法を使うのも十分だと思います.Restrictionsにはorなど多くのクエリー条件があり、inには対応するサポートがあります.
public void otherQuery() {
Session session = null;
Transaction tra = null;
// session
try {
session = HibernateUtil.getSession();
tra = session.beginTransaction();
Criteria c=session.createCriteria(StudentInfo.class);
//c.add(Restrictions.eq("username", " "));
c.add(Restrictions.or(Restrictions.lt("fid", 5)));
//
c.setFirstResult(0);
// 10
c.setMaxResults(10);
List<StudentInfo> all = c.list();
//
//StudentInfo info=(StudentInfo)c.uniqueResult();
for (StudentInfo studentInfo : all) {
System.out.println(" :"+studentInfo.getUsername());
}
tra.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
同じクエリーの単一データもgetメソッドを使うことができます.自分でやってみてください.次のページの面接でよく聞かれますが、メモに重点を置いてください.
//
c.setFirstResult(0);
// 10
c.setMaxResults(10);