1、Hibernate悲觀鎖和樂觀鎖?
(更多面試題推薦:java面試題及答案)
Hibernate悲觀鎖:在數(shù)據(jù)有加載的時候就給其進行加鎖,直到該鎖被釋放掉,其他用戶才可以進行修改,優(yōu)點:數(shù)據(jù)的一致性保持得很好,缺點:不適合多個用戶并發(fā)訪問。當(dāng)一個鎖住的資源不被釋放掉的時候,這個資源永遠不會被其他用戶進行修改,容易造成無限期的等待。
Hibernate樂觀鎖:就是在對數(shù)據(jù)進行修改的時候,對數(shù)據(jù)才去版本或者時間戳等方式來比較,數(shù)據(jù)是否一致性來實現(xiàn)加鎖。優(yōu)點比較好。
立即學(xué)習(xí)“Java免費學(xué)習(xí)筆記(深入)”;
2、Hibernate三種狀態(tài)?
臨時狀態(tài):new的對象還未持久化,還沒處于Session中
持久狀態(tài):已經(jīng)持久化,加入到session緩存沖,處于此狀態(tài)的對象叫持久對象;
游離狀態(tài):持久化對象脫離了Session的對象。如Session緩存被清空的對象。特點:已經(jīng)持久化,但不在Session緩存中。處于此狀態(tài)的對象叫游離對象;
(相關(guān)教程推薦:java入門教程)
3、hibernate和ibatis的區(qū)別?
ibatis:開源項目上手簡單,開發(fā)靈活,開發(fā)工作量大,大多自己寫sql,很多配置文件
Hibernate:開源的對象關(guān)系映射框架,開發(fā)效率高,但不能干擾sql,做優(yōu)化程度較低
4、講講mybatis連接池?
常見的mybatis連接池有原生、c3p0、dbcp三類,通過工廠模式創(chuàng)建DataSource接口,它的實現(xiàn)有unpooledDataSource(不帶連接池的數(shù)據(jù)源),PooledDataSource(帶連接池的數(shù)據(jù)源),它們都可以通過對應(yīng)的工廠類對象獲?。?/p>
拿PooledDataSource來說的話首先:需要一個連接數(shù)據(jù)庫的對象,在執(zhí)行SQL語句的時候獲取java.sql.Connection連接對象
其次:PooledDataSource數(shù)據(jù)源將Connection連接池對象包裹成PooledConnection對象放到了PoolState類型的容器中維護。 MyBatis將連接池中的連接池dui分為兩種狀態(tài): 空閑狀態(tài)(idle)和活動狀態(tài)(active),PooledConnection對象分別被存儲到PoolState容器內(nèi)的idleConnections和activeConnections兩個List集合中:
空閑(idle)狀態(tài)就把PooledConnection對象被放置到idleConnections集合中,表示當(dāng)前閑置的沒有被使用的PooledConnection集合,調(diào)用PooledDataSource的getConnection()方法時,會優(yōu)先從此集合中取PooledConnection對象。當(dāng)用完一個java.sql.Connection對象時,MyBatis會將其包裹成PooledConnection對象放到此集合中。
活動(active)狀態(tài)下把PooledConnection對象被放置到名為activeConnections的ArrayList中,表示當(dāng)前正在被使用的PooledConnection集合,調(diào)用PooledDataSource的getConnection()方法時,會優(yōu)先從idleConnections集合中取PooledConnection對象,如果沒有,則看此集合是否已滿,如果未滿,PooledDataSource會創(chuàng)建出一個PooledConnection,添加到此集合中,并返回;
(視頻教程推薦:java課程)
5、SpringMVC的工作原理?
?用戶發(fā)送請求,被前端控制器DispatcherServlet捕獲攔截;
DispatcherServlet調(diào)用HandlerMapping處理器映射管理對象獲得Handler處理器;
DispatcherServlet根據(jù)Handler去獲取適合的適配器HandlerAdpter,HttpMessageConveter將請求信息轉(zhuǎn)換成指定的響應(yīng)對象;
有了適配器,把請求參數(shù)填充到Handler,spring就開始執(zhí)行Handler(Controller)進行數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)驗證、數(shù)據(jù)格式化操作
Handler執(zhí)行完之后,向DispatcherServlet返回一個ModelAndView對象;
根據(jù)返回的ModelAndView選擇一個合適的ViewResolver視圖解析器,找到ModelAndView指定的視圖;
ViewResolver結(jié)合Model、View渲染顯示頁面;
以上就是多年開發(fā)經(jīng)驗總結(jié)的Java面試題——(七)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
java怎么學(xué)習(xí)?java怎么入門?java在哪學(xué)?java怎么學(xué)才快?不用擔(dān)心,這里為大家提供了java速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號