搜尋
首頁JavaJava入門java持久層面試題目(二)

java持久層面試題目(二)

Mar 20, 2020 pm 06:17 PM
java面試

java持久層面試題目(二)

1、解釋MyBatis中命名空間(namespace)的功能。

在大型專案中,可能存在大量的SQL語句,這時候為每個SQL語句起一個唯一的識別(ID)就變得不容易了。為了解決這個問題,在MyBatis中,可以為每個映射檔案起一個唯一的命名空間,這樣定義在這個映射檔案中的每個SQL語句就成了定義在這個命名空間中的一個ID。

只要我們能夠保證每個命名空間中這個ID是唯一的,即使在不同映射檔案中的語句ID相同,也不會再產生衝突了。

(推薦教學:java快速入門

2、MyBatis中的動態SQL是什麼意思?

對於一些複雜的查詢,我們可能會指定多個查詢條件,但是這些條件可能存在也可能不存在,如果不使用持久層框架我們可能需要自己拼裝SQL語句,不過MyBatis提供了動態SQL的功能來解決這個問題。

MyBatis中用來實現動態SQL的元素主要有:

- if    - choose / when / otherwise    - trim    - where  # ##

   <select id="foo" parameterType="Blog" resultType="Blog">        
   select * from t_blog where 1 = 1
        <if test="title != null">            
           and title = #{title}
        </if>
        <if test="content != null">            
           and content = #{content}
        </if>
        <if test="owner != null">            
           and owner = #{owner}
        </if>
   </select>

3、JDBC程式設計有哪些不足之處,MyBatis是如何解決這些問題的?     

   

(1)JDBC:資料庫連結建立、釋放頻繁造成系統資源浪費進而影響系統效能,若使用資料庫連結池可解決此問題。

MyBatis:在SqlMapConfig.xml中設定資料連結池,使用連接池管理資料庫連結。

(2)JDBC:Sql語句寫在程式碼中造成程式碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java程式碼。

MyBatis:將Sql語句配置在XXXXmapper.xml檔案中與java程式碼分開。

(3)JDBC:向sql語句傳參數麻煩,因為sql語句的where條件不一定,可能多也可能少,佔位符需要和參數一一對應。

MyBatis: Mybatis自動將java物件對應至sql語句。

(4)JDBC:對結果集解析麻煩,sql變化導致解析程式碼變化,且解析前需要遍歷,如果能將資料庫記錄封裝成pojo物件解析比較方便。

MyBatis:Mybatis自動將sql執行結果對應至java物件。

4、MyBatis與Hibernate有哪些不同?

(1)Mybatis和hibernate不同,它不完全是一個ORM框架,因為MyBatis需要程式設計師自己寫Sql語句,不過mybatis可以透過XML或註解方式靈活地設定要執行的sql語句,並將java物件和sql語句映射產生最終執行的sql,最後將sql執行的結果再映射產生java物件。

(2)Mybatis學習門檻低,簡單易學,程式設計師直接編寫原生態sql,可嚴格控制sql執行性能,靈活度高,非常適合對關係資料模型要求不高的軟體開發,例如網路軟體、企業營運軟體等,因為這類軟體需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到資料庫無關性,如果需要實作支援多種資料庫的軟體則需要自訂多套sql映射文件,工作量大。

(3)Hibernate物件/關聯映射能力強,資料庫無關性好,對於關係模型要求高的軟體(例如需求固定的客製化軟體)如果用hibernate開發可以節省很多程式碼,提高效率。但是Hibernate的缺點是學習門檻高,要精通門檻更高,而且怎麼設計O/R映射,在性能和對像模型之間如何權衡,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。           

總之,依照使用者的需求在有限的資源環境下只要能做出維護性、擴充性良好的軟體架構都是好架構,所以架構只有適合才是最好。

5、簡單的說一下MyBatis的一級快取和二級快取?

Mybatis先到快取中查詢結果集,如果沒有則查詢資料庫,如果有則從快取取出回傳結果集就不走資料庫。 Mybatis內部儲存快取使用一個HashMap,key為hashCode sqlId Sql語句。 value為從查詢出來對應產生的java物件。

Mybatis的二級快取即查詢緩存,它的作用域是一個mapper的namespace,即在同一個namespace中查詢sql可以從快取中取得資料。二級緩存是可以跨SqlSession的。

相關影片教學推薦:

java影片教學

#

以上是java持久層面試題目(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器