ハイベルナーが提供する各種の照会方法

2142 ワード

一:HQLクエリ
             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();
	}
}