Java面試題大全

2021-07-23 07:25:44 字數 1570 閱讀 5288

1.比較hql、criteria、native-sql這三者做查詢的區別,以及應該如何進行選擇?

hql功能很強大,適合各種情況,但是動態條件查詢構造起來很不方便;

criteria 最適合動態查詢,但不太適合統計查詢,qbe還不夠強大.只適合簡單的查詢;

native-sql可以實現特定的資料庫的sql,但是可移植性並不好。

如大部分查詢都是動態條件查詢,首先criteria,甚至使用hibernate3提供的detachedcriteria,構造好detachedcriteria再進入session執行查詢。

但是涉及到統計查詢和非常複雜的關聯查詢,criteria就無能為力了。這種情況下選擇使用hql。最後如果涉及到使用某些資料庫的特性的時候,就只有選擇native-sql了

hibernate的一級快取和二級快取有什麼區別?

第一級快取由session例項維護,它是必選的,其中保持了session當前所有關聯實體的資料,也稱為內部快取。而第二級快取則存在於sessionfactory層次,它是可選的。一級快取只能為當前執行緒的會話快取,無法給整個應用共享;二級快取可為整個應用提供快取支援。二級快取可以開啟查詢快取,而一級快取不行。

你是怎麼看spring框架的?

spring是乙個輕量級的容器,非侵入性的框架.最重要的核心概念是ioc,並提供aop概念的實現方式,提供對持久層,事務的支援,對當前流行的一些框架(struts,hibernate,mvc),sping也提供了與它們的相整合的方案.使用spring,我們能夠減少類之間的依賴性和程式之間的耦合度,最大程度的實現松耦合,使程式更加靈活,可擴充套件性更強.使用spring,使得開發人員可以真正的專注於業務邏輯,而不是**。

4.什麼是aop?

aop為aspect oriented programming的縮寫,意為:面向切面程式設計(也叫面向方面),可以通過預編譯方式和執行期動態**實現在不修改源**的情況下給程式動態統一新增功能的一種技術。

aop是目前軟體開發中的乙個熱點,也是spring框架中的乙個重要內容。利用aop可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。

aop是oop的延續,主要的功能是:日誌記錄,效能統計,安全控制,事務處理,異常處理等等。

在spring中提供了aop的豐富支援,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用物件只實現它們應該做的——完成業務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。

5.在spring的事務體系中,事務傳播特性:required和requiresnew有何不同?

required

如果當前存在乙個事務,則加入當前事務。如果不存在任何事務,則建立乙個新的事務。總之,要至少保證在乙個事務中執行。propagation_required通常作為預設的事務傳播行為。

requiresnew

不管當前是否存在事務,都會建立新的事務。如果當前存在事務,會將當前的事務掛起(suspend)。如果某個業務物件所做的事情不想影響到外層事務,propagation_requires_new應該是合適的選擇。

Python面試題大全(二)

原文 1.python中類方法 類例項方法 靜態方法有何區別?區別 使用示例 python 1 class a object 2def foo self,x 3 類例項方法 4print executing foo s,s self,x 56 classmethod 7def class foo c...

python面試題大全(二)

1.python中類方法 類例項方法 靜態方法有何區別?區別 使用示例 python 1 class a object 2def foo self,x 3 類例項方法 4print executing foo s,s self,x 56 classmethod 7def class foo cls,...

鏈表面試題大全

include list.h 買乙個結點 pnode buynode datatype d 銷毀鍊錶 void destroylist plist pplist del null pplist null 尾加 用cur指標找到最後乙個結點 然後將新結點新增到cur後 void pushback pl...