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.使用占位符
分頁查詢: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&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>