ハイベルナーが提供する各種の照会方法
2142 ワード
一:HQLクエリ
HQLクエリとSQLクエリの違い:
SQL: (構造化されたクエリ文)クエリーはテーブルとフィールドです。 大文字と小文字を区別しない。
HQL: ヒベルナ query langer. つまり、hibernateが提供する対象向けの照会言語であり、照会するのは対象及び対象の属性である。大文字と小文字を区別する
二:Criteriaクエリ(Query by Criteria)
完全に対象に向けたクエリー方式
三:ローカルSQLクエリ
複雑な検索は元の生態系のsqlを使って調べてもいいです。地元のsql検索のサポートです。
(短所:データベースプラットフォームをまたぐことはできません!)
HQLクエリとSQLクエリの違い:
SQL: (構造化されたクエリ文)クエリーはテーブルとフィールドです。 大文字と小文字を区別しない。
HQL: ヒベルナ query langer. つまり、hibernateが提供する対象向けの照会言語であり、照会するのは対象及び対象の属性である。大文字と小文字を区別する
二:Criteriaクエリ(Query by Criteria)
完全に対象に向けたクエリー方式
三:ローカルSQLクエリ
複雑な検索は元の生態系のsqlを使って調べてもいいです。地元のsql検索のサポートです。
(短所:データベースプラットフォームをまたぐことはできません!)
public class TestHibernateQuery {
private static SessionFactory sf;
static {
// sf
sf = new Configuration().configure().buildSessionFactory();
}
<span style="color:#cc0000;">//HQL 【 】</span>
@Test
public void testQuery() throws Exception {
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
//
//Employee emp = (Employee) session.get(Employee.class, 1);
// HQL ,
Query q = session.createQuery("from Employee where empId=1 or empId=2");
List<Employee> list = q.list();
System.out.println(list);
tx.commit();
session.close();
}
<span style="color:#cc0000;">//QBC , query by criteria </span>
@Test
public void testQBC() throws Exception {
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Criteria criteria = session.createCriteria(Employee.class);
//
criteria.add(Restrictions.eq("empId", 1));
//
List<Employee> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
<span style="color:#cc0000;">//sQL</span>
@Test
public void testSQL() throws Exception {
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
// , list
// SQLQuery sqlQuery = session.createSQLQuery("select * from employee");
//
SQLQuery sqlQuery = session.createSQLQuery("select * from employee").addEntity(Employee.class);
List list = sqlQuery.list();
System.out.println(list);
tx.commit();
session.close();
}
}