首頁 >Java >Java面試題 >多年開發經驗總結的Java面試問題-(七)

多年開發經驗總結的Java面試問題-(七)

王林
王林轉載
2020-08-20 16:37:042196瀏覽

多年開發經驗總結的Java面試問題-(七)

1、Hibernate悲觀鎖定與樂觀鎖定 

(更多面試題推薦:java面試題目及答案

Hibernate悲觀鎖定:在資料有載入的時候就給其加鎖,直到該鎖被釋放掉,其他使用者才可以進行修改,優點:資料的一致性保持得很好,缺點:不適合多個使用者並發存取。當一個鎖住的資源不被釋放掉的時候,這個資源永遠不會被其他使用者修改,容易造成無限期的等待。

Hibernate樂觀鎖:就是在對資料進行修改的時候,對資料才去版本或時間戳等方式來比較,資料是否一致性來實現加鎖。優點比較好。

2、Hibernate三種狀態 

臨時狀態:new的物件尚未持久化,還沒處於Session中

持久狀態:已經持久化,加入到session緩存衝,處於此狀態的物件叫做持久物件;

遊離狀態:持久化物件脫離了Session的物件。如Session緩存被清空的物件。特點:已經持久化,但不在Session快取中。處於此狀態的物件叫做遊離物件;

(相關教學建議:java入門教學

3、hibernate和ibatis的差異 

#ibatis:開源專案上手簡單,開發靈活,開發工作量大,大多自己寫sql,很多設定檔

Hibernate:開源的物件關係映射框架,開發效率高,但不能幹擾sql,做最佳化程度較低

4、講講mybatis連線池 

常見的mybatis連線池有原生、c3p0、dbcp三類,透過工廠模式創建DataSource接口,它的實現有unpooledDataSource(不帶連接池的資料源),PooledDataSource(帶連接池的資料源),它們都可以透過對應的工廠類對象來取得;

拿PooledDataSource來說的話首先:需要一個連接資料庫的對象,在執行SQL語句的時候取得java.sql.Connection連接對象

其次:PooledDataSource資料來源將Connection連接池物件包裹成PooledConnection對象放到了PoolState類型的容器中維護。 MyBatis將連接池中的連接池dui分為兩種狀態: 空閒狀態(idle)和活動狀態(active),PooledConnection物件分別儲存到PoolState容器內的idleConnections和activeConnections兩個List集合中:

空閒(idle)狀態就把PooledConnection物件被放置到idleConnections集合中,表示當前閒置的沒有被使用的PooledConnection集合,呼叫PooledDataSource的getConnection()方法時,會優先從此集合中取PooledConnection物件。當用完一個java.sql.Connection物件時,MyBatis會將其包裹成PooledConnection物件放到此集合中。

活動(active)狀態下把PooledConnection物件被放置到名為activeConnections的ArrayList中,表示目前正在被使用的PooledConnection集合,呼叫PooledDataSource的getConnection()方法時,會優先從idleConnections集合中取PooledConnection物件,如果沒有,則看此集合是否已滿,如果未滿,PooledDataSource會建立出一個PooledConnection,加入到此集合中,並傳回;

(影片教學推薦:java課程

5、SpringMVC的工作原理 

# 用戶發送請求,被前端控制器DispatcherServlet捕獲攔截;

#DispatcherServlet調用HandlerMapping處理器對映管理物件獲得Handler處理器;

DispatcherServlet根據Handler去取得適合的適配器HandlerAdpter,HttpMessageConveter將請求資訊轉換成指定的回應物件;

有了適配器,把請求參數填充到Handler,spring就開始執行Handler(Controller)進行資料轉換、資料驗證、資料格式化操作

Handler執行完之後,向DispatcherServlet傳回一個ModelAndView物件;

#根據傳回的ModelAndView選擇一個合適的ViewResolver視圖解析器,找到ModelAndView指定的視圖;

ViewResolver結合Model、View渲染顯示頁面;

以上是多年開發經驗總結的Java面試問題-(七)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除