Hibernate 關於複雜的SQL統計語句是不是就不適合使用Hibernate了

時間 2022-02-18 02:50:11

1樓:匿名使用者

在這方面我也和你有同感。

不同的orm工具各有其優缺點和適用範圍。hibernate使資料操作物件化,在物件和資料之間做了很好的銜接,非常適用於資料的維護類操作和明細查詢操作,而對於資料統計類的操作則顯得作用不強。hibernate歷來支援原生的sql,較新的版本也支援對sql、stored procedure甚至xml的封裝,也可以像ibatis,現在叫作mybatis,對部分字段封裝。

hibernate的新功能越來越像ibatis了。ibatis或mybatis是對sql的封裝,相對簡單、靈活,效能也相對好些,但不是絕對的,其效能的好壞主要取決於編寫的sql的質量,而ibatis的動態sql本身就是對效能的一種威脅。ibatis或mybatis適用於做各種資料操作,不過需要良好的sql能力和對具體資料庫(如oracle、sqlserver)的了解,故而在維護、變更或資料庫公升級、遷移時比較複雜。

較新的mybatis提供了一些類似於hibernate的特徵,比如可以支援父子表物件之間的雙相關聯;而另外一些特性,比如註解式的sql封裝、通過**根據介面定義自動例項化dao,似乎比hibernate還要好些。jdbc 3.0和4.

0比以前也增加了一些新特徵,具體的我還沒有仔細研究。呵呵

在我看來,報表是需求中最不穩定的部分,形式多樣、變化多端,無論是自己編寫的還是第三方的公共元件,都只能在基礎查詢和表現形式上加工;具體的報表邏輯仍需手工開發。所以無論用哪種技術做報表,在報表邏輯方面的複雜度是相同的。我一般會採用相對最簡單的技術條件來設計報表,避免程式設計師把功夫較多得花在不太熟悉的資料工具和報表工具上。

希望能對你有所幫助。

2樓:匿名使用者

當到一定程度之後你會發現,最好的還是原生的jdbc+資料庫連線池框架,其他都是浮雲。

3樓:匿名使用者

一樣的,但是個人感覺還是ibatis靈活...

是不是用hibernate就不用寫sql語句了

4樓:匿名使用者

hql雖然比sql更加物件導向,但是到今日都還沒有完全成熟,所以hibernate仍然支援sql的查詢。在應用中加入業務特別複雜還是避免不了要用sql的

5樓:

可以寫,也可以不寫,hibernate已經提供了許多資料庫操作的方法,可以支援大部門的資料庫操作;但它也沒有限制開發人員以靈活的方式編寫自己的sql語句。可以是hql也可以是sql,可以在**裡進行封裝,也可以在配置檔案中插入一些子查詢,這就看具體需求和個人喜好了。

6樓:匿名使用者

還不是根據業務需要嘛 hibernate 雖然可以代替大部分sql 但是有的地方也不是很靈活 還是要寫sql的

7樓:匿名使用者

是可以不要寫,但有的還要寫hql

hql 跟sql語法也是類似

表名成了物件名,欄位名成了物件屬性名

8樓:寶寶和妖怪

hibernate的叫hql語句

解析後也是sql語句

不過是物件導向的

能用物件。。

9樓:硬木花道

可用可不用,在hibernate中檢索物件有多種方式,具體得看你用那種方式查詢了,方式不同查詢語句就不同:

1)導航物件圖檢索(物件圖導航):

根據已經獲取的物件,去檢索相關聯的物件

user user = ...

address address = user.getaddress();

2)oid檢索(通過物件識別符號查詢):

session.get(student.class,oid)session.load(student.class,oid)3)hql檢索(物件導向查詢):

session.createquery(hql);

4)qbe 檢索(按樣例查詢,query by example);

5)本地sql(傳統的sql查詢):

session.createsqlquery(sql);

6)qbc檢索(按條件查詢,query by criteria) 。

10樓:淨利率

可以寫,hibernate既可以寫sql語句,也可以寫hql語句

11樓:匿名使用者

可用hql,也可用sql

為什麼hibernate不建議使用sql語句

12樓:逆之武者

簡單的單錶查詢最好不要用sql語句,否則就失去了hibernate的優勢。

多表查詢,複雜查詢肯定要寫sql語句

ibatis和hibernate的區別,說清楚點最好哦 謝謝

13樓:匿名使用者

ibatis是半自動化的

14樓:我是1號流氓

hibernate不用自己寫sql,而ibatis要自己寫sql

hibernate關於Session和Transaction開啟和提交的方式

載入配置檔案,建立session工廠,獲得乙個session 或者是session hibernatefactory.getsession hibernate中的session.flush和commit的區別 hibernate中 session.gettransaction commit 這句話怎...

hibernate中的query怎麼取到每個欄位的值

邗啟 教你個方法 list result session.createsqlquery sql setresulttransformer transformers.alias to entity map list 用這個方法可以把資料庫查詢出來的每一行封裝成一個map型別,key為資料庫欄位,val...

hibernate的對映檔案中generator的屬性問題

1 assigned 主鍵由外部程式負責生成,無需hibernate參與。2 hilo 通過hi lo 演算法實現的主鍵生成機制,需要額外的資料庫表儲存主 鍵生成歷史狀態。3 seqhilo 與hilo 類似,通過hi lo 演算法實現的主鍵生成機制,只是主鍵歷史 狀態儲存在sequence中,適用...