發(fā)布時間:2023-07-30
瀏覽次數:0
◆數據庫操作框架
數據庫操作框架是指第三方軟件操作數據庫所使用的組件工具。 盡管根據不同的開發(fā)語言,數據庫操作框架有所不同intellij idea 數據庫關系圖,但它們要解決的問題是相同的,即建立連接、斷開連接、發(fā)送操作指令(通常是SQL語句)以及轉換和返回結果。
對于用 Java 編寫的前端應用程序,比較流行的數據庫框架是 JDBC、JDBC、JPA 和 .
下面將對這五種數據庫操作框架進行介紹和比較。
◆1. 數據庫連接
JDBC(Java)是Java操作數據庫的基本工具,它為各種數據庫提供統一的規(guī)范和套接字。 通過使用 JDBC,Java 應用程序可以使用同一個套接字來操作不同的數據庫(例如 MySQL 等)。 但實際上,JDBC并不直接與數據庫進行通信,它只是充當Java程序與數據庫驅動程序之間的橋梁,如圖4.72所示。
圖4.72 JDBC工作原理
說明:數據庫驅動程序是用Java編寫的組件,負責與其對應的數據庫進行通信。 數據庫驅動本身就可以直接使用,而JDBC只是統一了各種驅動的使用。 在使用JDBC操作數據庫之前,需要自動指定數據庫驅動程序。
JDBC可以在任何Java程序中使用,使用JDBC操作數據庫如代碼4.44所示。
不過,不建議在前端應用程序中使用 JDBC,因為 JDBC 相當原始,用戶需要編寫大量代碼來建立對數據庫的操作。 在前端應用中,使用其他數據庫框架可以節(jié)省大量代碼(如建立連接、斷開連接等)。
代碼4.操作數據庫的代碼
#更新數據
設置==id_1
……
//指定MySQL數據庫驅動
類。(“com.mysql.jdbc。”);
// 建立連接
=.(
//數據庫連接地址,xxx為具體數據庫名稱
“jdbc:mysql://ip:端口/xxx”,
““,//用戶名
““);//密碼
//編譯查詢SQL語句, ? 是占位符intellij idea 數據庫關系圖,然后用參數替換
=“*=?”;
=.();
//這 ? 替換中的占位符,1表示第一個占位符
.(1,“王五”);
//執(zhí)行SQL語句
=.();
//處理查詢集合
while(.next()){
//對每個查詢結果的處理,根據獲取數組的值的方法是.("id")
◆2. 數據庫連接
JDBC是為相關框架(如Boot、MVC等)設計的數據庫操作框架,是對JDBC的底層封裝。 通過使用JDBC,開發(fā)人員無需關心數據庫連接過程(無需編寫連接和斷開數據庫的代碼),只需要在前端應用程序的配置文件中配置數據庫連接信息即可實現手動連接數據庫。
JDBC只能用在使用相關框架的前端應用程序中。 JDBC實現了手動連接和斷開數據庫,省去了JDBC中自動連接和斷開數據庫的麻煩。
在與數據庫的通信方面,JDBC保留了SQL語句的方法,但簡化了JDBC的調用方法,如代碼4.45所示。
代碼4.操作數據庫的代碼
//編譯查詢SQL語句, ? 是占位符,然后用參數替換
="*=?=?";
//執(zhí)行SQL語句
=.(,"王五","50");
//處理查詢集合
為(inti = 0;我 // 轉換每個結果的數據類型 地圖=(地圖)list.get(i); ...//處理每個結果 ◆3. 它是一個高度手動的數據庫操作框架,是對JDBC的底層封裝。 通過使用,可以將數據庫中的表映射為Java類,如代碼4.46所示。 開發(fā)者只需要使用這個映射類來操作數據庫(手動生成SQL語句),如代碼4.47所示。 說明:根據數據庫的表映射的Java類稱為(實體)模型。 要使用它們,需要為每個需要操作的表建立相應的模型。 模型可以使用相關工具手動生成,不需要自動填寫。 清單 4.46 用于數據庫映射的 Java 類 //映射數據庫的user表,表中有id和info兩個數組 @ @Table(名稱=“用戶”) 類用戶{ @ID @(=。) @(name="id",=true,=false); @(名稱=“信息”) 信息; 長getId(){ ID; (長ID){ 這個.id=id; (){ 信息; 無效(信息){ 這個.info=信息; 代碼4.操作數據庫的代碼 // 獲取數據庫連接,與4.3.4節(jié)不同 =.(); // 編譯查詢HQL語句, ? 是占位符,然后用參數替換 =“=?”; 查詢query=.(hql); query.(0,"王五"); //獲取結果 列表=查詢。 列表(); //處理查詢結果 為(inti = 0;我 //將每個結果轉換為對應的Java對象,其中User映射到代碼4.45中定義的數據庫 Java類 =(用戶)list.get(i); ...//處理每個結果 可以在任何Java程序中使用。 數據庫可以手動連接和斷開(通過XML配置文件設置)。 在與數據庫的通信方面,可以根據映射關系手動生成SQL單詞和語句。 為了降低手動生成SQL語句的靈活性,提供了HQL(Query)語句。 HQL語句結構與SQL類似,但其功能不如SQL完善。 這些“自動生成SQL語句”的方法似乎節(jié)省了學習SQL的時間,并且希望使用面向對象編程思想的數據庫。 而且在實際編程中,有些操作只能通過SQL語句來實現(無法完全脫離SQL語句),但是當要操作的數據表很多時,映射關系也會非常復雜。 因此,目前的熱度正在逐漸減弱。 描述:類似于這些將關系數據庫中的表映射到Java類的數據庫操作框架,它們被稱為ORM框架(對象關系映射)。 比較流行的ORM框架有等等。 ◆4. 日本PA JPA(Java API,Java Layer API)是ORM框架的統一規(guī)范,為多個ORM框架提供了統一的使用。 使用JPA的好處在于可以自由切換ORM框架而不影響代碼。 JPA和ORM框架的關系如圖4.73所示。 需要注意的是,在使用JPA之前,需要指定具體的ORM框架和數據庫驅動。 圖4.73 JPA內部結構 ◆5. 它是一個不完整的ORM框架,是對JDBC的底層封裝。 還需要將數據庫中的表映射為Java類,并且不會根據Java對象手動生成SQL語句。 如果作為數據庫操作框架,開發(fā)者需要編譯SQL語句模板,根據指定的SQL語句模板和Java對象生成對應的SQL語句,如代碼4.48所示。 代碼4.操作數據庫的代碼 @ { //定義SQL模板,其中#{}為要替換的參數 @("*=#{}= #{}") //定義操作函數。 函數調用后,會手動將參數填入SQL模板并執(zhí)行SQL語句,然后返回 因此,返回類型 User 是映射到代碼 4.46 中定義的數據庫的 Java 類 列表(@Param(“”),@Param(“”) ); //下面是調用上面查詢操作的例子 list=.("王五","0"); //處理查詢結果 為(inti = 0;我 //將每個結果轉換為對應的Java對象,其中User映射到代碼4.46中定義的數據庫 Java類 =list.get(i); ...//處理每個結果 可以在任何Java程序中使用。 的出現,在保持了ORM框架“以面向對象編程的思想使用數據庫”的同時,也避免了手動生成SQL語句帶來的限制。 ◆6. 數據庫操作框架的選擇 對于用Java編寫的前端應用程序,數據庫框架通常是在JPA(或諸如ORM框架)和JPA之間進行選擇。 這三類數據庫操作框架的主要區(qū)別在于SQL結構和返回結果轉換的形式,這種方法本身很難區(qū)分哪種更好。 因此,只需遵循團隊的使用習慣或偏好即可。 只需選擇數據庫操作框架即可。 ◆7. Boot中使用數據庫框架的具體方式 這里以JDBC為例介紹Boot中使用數據庫框架的具體方法。 在Boot中使用JDBC需要三個步驟,即引入JDBC依賴包、配置數據庫信息、在代碼中使用JDBC操作數據庫。 (1)引入JDBC依賴包。 需要在項目配置文件(build.)中添加JDBC依賴包,如代碼4.49所示。 代碼4.49在build....中添加了JDBC依賴包 { …… //添加JDBC依賴包 'org..boot:-boot --jdbc' 'com.:druid:1.0.26'//數據庫連接池依賴 ' mysql:mysql--java'//MySQL驅動依賴 …… …… 添加依賴包后,需要同步項目配置。 同步項目配置完成后,會下載并導入JDBC依賴包。 在IDEA中,只需點擊“同步”按鈕即可同步項目配置,如圖4.74所示。 圖 4.74 同步構建。 IDEA中的配置 (2)配置數據庫信息。 配置數據庫連接信息需要在前端應用的配置文件中設置(默認為.),如代碼4.50所示,其中連接池的具體設置需要根據實際情況確定。 說明: 頻繁建立和斷開數據庫連接非常消耗資源。 連接池的作用是防止頻繁創(chuàng)建和釋放連接帶來的大量性能開銷。 清單 4.50 將數據庫連接信息添加到配置文件中... #設置數據庫連接地址,xxx為具體數據庫名稱 ..jdbc-url=jdbc:mysql://ip:端口/xxx # 設置用戶名 ..=根 #設置密碼 ..= #指定MySQL數據庫驅動 ..-class-name=com.mysql.cj.jdbc。 #設置數據庫連接池,type為指定連接池的包,max-為最大活動連接數,max-idle為 最大等待連接數,-size為初始狀態(tài)下建立的連接數 ..type=com..druid.pool。 ..最大-=20 ..最大空閑=8 ..-大小=10 …… (3)使用JDBC操作數據庫的代碼通常在Dao層,具體代碼如代碼4.51所示。 代碼4.51通過JDBC操作數據庫 com..demo.dao; // 引用的類 org..jdbc.core.; ...//省略其他引用的類 @(“”) 班級 { // 獲取對象,該對象將被手動注入 @ ; (,){ 嘗試 { //SQL語句,? 是占位符,后面是參數替換 =“INTO(?,?)”; //執(zhí)行SQL語句 int=.(,,); 如果(>0){ “”; }別的{ “失敗”; }抓?。╡){ “失敗”;} 獲取列表(鍵){ 列表 = (); 嘗試 { //SQL語句,? 是占位符,后面是參數替換 ="*=? =?”; //執(zhí)行SQL語句 =.(,"王五","50"); }抓?。╡){ //失敗 ; 如有侵權請聯系刪除!
Copyright ? 2023 江蘇優(yōu)軟數字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務提供商
13262879759
微信二維碼