Hibernate的查詢方式(簡要)


Hibernate的查詢方式

 1.OID檢索:

  使用session.get(Object.class,oid),session.load(Object.class,oid),根據表的主鍵查詢

 2.對象導航檢索以及聯級映射的配置:

  根據已有對象查詢與之對應的另外一些對象,比如一個Customer對象中有一個Linkmans(聯系人對象)集合,當查詢出Customer后,直接變量linkMans集合就可以查詢到與之對應的聯系人
  配置文件:

    一對一:<one-to-one name="User" class="com.lzy.hibernate.User" ></one-to-one>

    一對多:
    ​ 

    多對一:

        

 

 3.HQL檢索:

  使用session.createQuery("HQL語句")查詢

  條件的添加:
      1.使用占位符
  
      2.使用別名
  

  分頁查詢:q.setFirstResult(0):設置第一條數據的位置
                    q.setMaxResults(3):設置查詢數據的條數(也就是每頁多少條)

  多表查詢:注意第一種寫法和第二種寫法的區別
  

 4.QBC檢索:

                      Criteria criteria = session.createCriteria(Customer.class);
                      criteria.add(Restrictions.like("參數1","參數2"));
             參數1:所添加條件的屬性名,比如Customer類中的cust_name屬性
             參數2:條件的值,比如 "路%"  (這里使用的是like)
       QBC離線查詢:當前台需要多條件查詢的時候,在web層將這些條件封裝到DetachedCriteria,便於傳遞到持久層
  

 5.SQL檢索:

  session.createSQLQuery("正常SQL語句").list();

如何使用Hibernate

1.配置文件

  核心配置文件hibernate.cfg.xml:url后面的參數為  useUnicode=true&amp;characterEncoding=UTF-8  為了解決中午亂碼。

   

 

  映射文件linkman.hbm.xml

  

 2.使用方法

 (1).在類中加載配置文件

  

 

  (2).將配置文件等放到工具類中

  

 

 3.openSession和getCurrentSession的區別

 openSession:打開一個新的session對象,而且每次使用都是打開一個新的session,假如連續使用多次,則獲得的session不是同一個對象,並且使用完需要調用close方法關閉session。

 getCurrentSession:獲取當前上下文一個session對象,當第一次使用此方法時,會自動產生一個session對象,並且連續使用多次時,得到的session都是同一個對象,這就是與openSession的區別之一,簡單而言,getCurrentSession 就是:如果有已經使用的,用舊的,如果沒有,建新的。

 在實際開發中,往往使用getCurrentSession多,因為一般是處理同一個事務(即是使用一個數據庫的情況),所以在一般情況下比較少使用openSession或者說openSession是比較老舊的一套接口了;

 要使用getCurrentSession需要在核心配置文件中加:<property name="hibernate.current_session_context_class">thread</property>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM