三種操作數據的策略

1、HQL( Hibernate Query Language 策略:

session.createQuery( "FROM Category c where c.name like 'Laptop%'" );

2、QBCQuery By Criteria策略:

session.createCriteria(Category . class ).add(Restrictions.like ( "name" , "Laptop%" ));

3、Native SQL 策略

session.createSQLQuery( "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'" ).addEntity( "c" ,Category . class );

 

參數綁定:

Query query = session.createQuery( "FROM Category c where c.name like :name" );

query.setParameter( "name" , "top" );

 

Query query = session.createQuery( "FROM Category c where c.name like ?" );

query.setParameter( 0 , "top" );

 

批量抓取:

query.setTimeout(60); // 查詢超時

query.setFetchSize(50); // 批量抓取

 

查詢結果:

List list = criteria .list();

生成 sql:select category_id from category where name like ?

Iterator categories = criteria .iterate();

生成 sql:select category_id from category where name like ?

使用 iterate() 查詢時將對象加載到高速緩存中,所以效率較 list() 要高 , 但提升性能不大。

(b)  ScrollableResult 遊標

Hibernate 查詢時可能存在結果集太大無法載入內存的問題,可以闡釋使用可滾動結果集 scrollable result 這種方法獲取所需要的數據。

ScrollableResults cusor  = criteria.scroll();

while (cusor.next()){cusor.get();}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章