Hibernate 6 種方式實現查詢

2021-07-01 21:29:58 字數 1721 閱讀 7122

昨天剛經歷一場校園招聘,中間和很多技術人寰交流,才明白總結的重要性,因為這一階段一直在寫專案,就把專案中用到的東西總結一番,希望

走一路,能留下點兒什麼。也許這就是成果。

我很想從現在做起,使自己能夠真正享受程式設計帶來的快樂,沒有虛榮,沒有競爭,沒有雜念。

只有快樂,只有充實,只有無悔。當然我說到做到,那篇日誌講的是乙個從點到面,從面到點的哲理。

我覺得有必要寫乙個hibernate的總結性隨筆,從點到面,講講hibernate查詢的6種方法。分別是hql查詢

,物件化查詢criteria方法,動態查詢detachedcriteria,例子查詢,sql查詢,命名查詢

如果單純的使用hibernate查詢資料庫只需要懂其中的一項就可以完成想要實現的一般功能,但是

從乙個點,讓我們掌握6中方法,則提供了更多選擇。每一種方法都有其適用的情況與前提。

hql查詢

hql是hibernate自己的一套查詢語言,於sql語法不同,具有跨資料庫的優點。示例**:

static void query(string name)

}finally}

用情況:常用方法,比較傳統,類似jdbc。缺點:新的查詢語言,適用面有限,僅適用於hibernate框架。

物件化查詢criteria方法

:static void cri(string name,string password)

}finally}

適用情況:物件導向操作,革新了以前的資料庫操作方式,易讀。缺點:適用面較hql有限。

動態分離查詢detachedcriteria

static list dc(detachedcriteria dc)

detachedcriteria dc = detachedcriteria.forclass(user.class);

int id = 1;

if (id != 0)

dc.add(restrictions.eq("id", id));

date age = new date();

if (age != null)

dc.add(restrictions.le("birthday", age));

list users = dc(dc);

system.out.println("離線查詢返回結果:" + users);

適用情況:物件導向操作,分離業務與底層,不需要字段屬性攝入到dao實現層。  缺點:適用面較hql有限

例子查詢

static list example(user user)

適用情況:物件導向操作。   缺點:適用面較hql有限,不推薦。

sql查詢

static list sql() {

session s = hibernateutil.getsession();

query q = s.createsqlquery("select * from user").addentity(user.class);

listrs = q.list();

s.close();

return rs;

適用情況:不熟悉hql的朋友,又不打算轉資料庫平台的朋友,萬能方法   缺點:破壞跨平台,不易維護,不物件導向。

命名查詢

適用情況:萬能方法,有點像ibatis輕量級框架的操作,方便維護。  缺點:不物件導向。基於hql和sql,有一定缺陷。

Hibernate6 集合對映

集合對映 一.對映set set是乙個集合介面,它的特性和數學上的集合有點類似,set中存放的是物件的引用,繼承自collection藉口.特性 1 不允許存放重複元素。2 元素是無序。3 主要有hashset,linkedhashset,treeset 3個實現set介面的具體類。1 hashse...

六種方式實現hibernate查詢

hibernate查詢的6種方法。分別是hql查詢 物件化查詢criteria方法,動態查詢detachedcriteria,例子查詢,sql查詢,命名查詢。1 hql查詢 hql是hibernate自己的一套查詢語言,於sql語法不同,具有跨資料庫的優點。示例 static void query ...

六種方式實現hibernate查詢

hql查詢 hql是hibernate自己的一套查詢語言,於sql語法不同,具有跨資料庫的優點。示例 static void query string name finally 適用情況 常用方法,比較傳統,類似jdbc。缺點 新的查詢語言,適用面有限,僅適用於hibernate框架。物件化查詢cr...