Jdbc和Jdbctemplate

大家好,我是IT修真院鄭州分院第11期的JAVA學(xué)員何爽,一枚正直純潔善良的java程序員。

今天給大家分享一下,修真院官網(wǎng)Java任務(wù)1,深度思考中的知識(shí)點(diǎn)————Jdbc和Jdbctemplate。

1.背景介紹

Java程序員最基本的也是最重要的技能之一就是去和數(shù)據(jù)庫(kù)打交道,但代碼和數(shù)據(jù)庫(kù)是互不相干的,那么我們?cè)鯓尤プ屛覀儗懙拇a去操作數(shù)據(jù)庫(kù)呢?這個(gè)時(shí)候我們就需要去用到jdbc去連接數(shù)據(jù)庫(kù)和我們的代碼。

2.知識(shí)剖析

(一)什么是jdbc,jdbctemplate

JDBC(Java Data Base

Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java API,可以為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫的類和接口組成。JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開(kāi)發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序。

JDBCTemplate就是Spring對(duì)JDBC的封裝,通俗點(diǎn)說(shuō)就是Spring對(duì)jdbc的封裝的模板,那么JDBCTemplate怎么做到的,這就和spring有關(guān)系了。

SpringIOC容器將管理數(shù)據(jù)庫(kù)連接的數(shù)據(jù)源當(dāng)作普通Java

Bean一樣管理,然后將數(shù)據(jù)源注入封裝類JdbcTemplate中,JdbcTemplate的dataSource屬性就是注入配置的數(shù)據(jù)源。

JDBCTemplate是涉及到spring框架的一種方法,JDBCTemplate就是通過(guò).xml配置文件極大的簡(jiǎn)化了我們代碼量,并且提高了安全性,通過(guò)配置文件實(shí)現(xiàn)代碼簡(jiǎn)化。

(二)jdbc操作數(shù)據(jù)庫(kù)的使用

(1)初始化驅(qū)動(dòng):

通過(guò)Driver接口,裝載MySql驅(qū)動(dòng):??????????????????

Class.forName("com.mysql.jdbc.Driver")

(2)創(chuàng)建數(shù)據(jù)庫(kù)連接:

connection = DriverManager.getConnection(url,name,密碼);

(3)創(chuàng)建sql語(yǔ)句???????????

(4)獲得向數(shù)據(jù)庫(kù)發(fā)送sql語(yǔ)句的parperstasement對(duì)象

preparedStatement =

connection.prepareStatement(sql);

(5)執(zhí)行SQL語(yǔ)句:

preparedStatement.executeUpdate();如果使用的select查詢,則需使用preparedStatement.executeQuery()方法。

(5)對(duì)結(jié)果集做相應(yīng)的處理(增,刪,改,查)

(6)關(guān)閉資源:

Close(resultSet,preparedStatement,connection);

(三)jdbctemplate操作數(shù)據(jù)庫(kù)的使用

1.要使用JDBCTemplate對(duì)象來(lái)完成JDBC操作。通常情況下,有三種種方式得到JDBCTemplate對(duì)象。

(1)我們可以在自己定義的DAO 實(shí)現(xiàn)類中注入一個(gè)DataSource 引用來(lái)完成JdbcTemplate 的實(shí)例化。也就是它是從外部“注入” DataSource 到DAO 中,然后自己實(shí)例化JdbcTemplate,然后將DataSource 設(shè)置到JdbcTemplate 對(duì)象中。

(2)在 Spring 的 IoC 容器中配置一個(gè) JdbcTemplate 的 bean,將 DataSource 注入進(jìn)來(lái),然后再把JdbcTemplate 注入到自定義DAO 中。

(3)Spring 提供了 org.springframework.jdbc.core.support.JdbcDaoSupport 類,這個(gè)類中定義了 JdbcTemplate 屬性,也定義了DataSource屬性,當(dāng)設(shè)置DataSource 屬性的時(shí)候,會(huì)創(chuàng)建jdbcTemplate 的實(shí)例,所以我們自己編寫的DAO 只需要繼承JdbcDaoSupport 類,然后注入DataSource 即可

2. JdbcTemplate類主要提供以下幾類方法:

(1)execute方法:用于執(zhí)行任何SQL語(yǔ)句,一般用于執(zhí)行DDL語(yǔ)句;

(2)update方法及batchUpdate方法:update方法用于執(zhí)行新增、修改、刪除等語(yǔ)句,batchUpdate方法用于執(zhí)行批處理相關(guān)語(yǔ)句;

(3)query方法及queryForXXX方法:用于執(zhí)行查詢相關(guān)語(yǔ)句;

3.常見(jiàn)問(wèn)題

數(shù)據(jù)庫(kù)連接資源被占用

PreparedStatement和Statement有什么區(qū)別?

JDBCTemplate和JDBC的優(yōu)缺點(diǎn)

4.解決方案

(1)如果真的發(fā)生數(shù)據(jù)庫(kù)連接資源被占用,有什么解決方法::

修改 MySQL 安裝目錄下 my.ini 或者 my.cnf 文件內(nèi)的 max_user_connections 參數(shù)的數(shù)值,重啟 MySQL 服務(wù)器。

(2)PreparedStatement和Statement有什么區(qū)別?

Statement每次執(zhí)行SQL語(yǔ)句,相關(guān)數(shù)據(jù)庫(kù)都要進(jìn)行SQL語(yǔ)句編譯,PreparedStatement是預(yù)編譯,對(duì)批量處理大大提高效率,可以防止SQL注入攻擊,防止數(shù)據(jù)庫(kù)緩沖池溢出,代碼的可讀性,可維護(hù)性都更好(運(yùn)行代碼)

(3)JDBCTemplate和JDBC的優(yōu)缺點(diǎn)

JDBC

優(yōu)點(diǎn):運(yùn)行期:快捷、高效

缺點(diǎn):編輯器:代碼量大、繁瑣異常處理、不支持?jǐn)?shù)據(jù)庫(kù)跨平臺(tái)

JDBCTemplate

優(yōu)點(diǎn):運(yùn)行期:高效、內(nèi)嵌Spring框架中、支持基于AOP的聲明式事務(wù)

缺點(diǎn):必須于Spring框架結(jié)合在一起使用、不支持?jǐn)?shù)據(jù)庫(kù)跨平臺(tái)、默認(rèn)沒(méi)有緩存

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

使用連接池的好處

1).當(dāng)有多個(gè)線程,每個(gè)線程都需要連接數(shù)據(jù)庫(kù)執(zhí)行SQL語(yǔ)句的話,那么每個(gè)線程都會(huì)創(chuàng)建一個(gè)連接,并且在使用完畢后,關(guān)閉連接。創(chuàng)建連接和關(guān)閉連接的過(guò)程也是比較消耗時(shí)間的,當(dāng)多線程并發(fā)的時(shí)候,系統(tǒng)就會(huì)變得很卡頓。同時(shí),一個(gè)數(shù)據(jù)庫(kù)同時(shí)支持的連接總數(shù)也是有限的,如果多線程并發(fā)量很大,那么數(shù)據(jù)庫(kù)連接的總數(shù)就會(huì)被消耗光,后續(xù)線程發(fā)起的數(shù)據(jù)庫(kù)連接就會(huì)失敗。

2.).連接池在使用之前,就會(huì)創(chuàng)建好一定數(shù)量的連接。如果有任何線程需要使用連接,那么就從連接池里面借用,而不是自己重新創(chuàng)建. 使用完畢后,又把這個(gè)連接歸還給連接池供下一次或者其他線程使用。倘若發(fā)生多線程并發(fā)情況,連接池里的連接被借用光了,那么其他線程就會(huì)臨時(shí)等待,直到有連接被歸還回來(lái),再繼續(xù)使用。整個(gè)過(guò)程,這些連接都不會(huì)被關(guān)閉,而是不斷的被循環(huán)使用,從而節(jié)約了啟動(dòng)和關(guān)閉連接的時(shí)間。

7.????參考文獻(xiàn)

https://blog.csdn.net/qq_40127655/article/details/80147358

https://www.yiibai.com/jdbc/jdbc-select-records.html?????????

http://alex4java.iteye.com/blog/2294833

http://www.itdecent.cn/p/bf7fde798851

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

技能樹(shù).IT修真院“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開(kāi)始,找個(gè)師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷?!?。

這里是技能樹(shù).IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化,師兄1對(duì)1免費(fèi)指導(dǎo)??靵?lái)與我一起學(xué)習(xí)吧~我的邀請(qǐng)碼:26435812,或者你可以直接點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/26435812。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.背景介紹 Java程序員在以后的工作中很重要的一點(diǎn)就是得和數(shù)據(jù)庫(kù)打交道,但是代碼和數(shù)據(jù)庫(kù)是兩個(gè)不相干的. 怎么...
    黑白電影_閱讀 983評(píng)論 0 2
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,273評(píng)論 6 342
  • 先送上今年的過(guò)年菜單 1. 醬牛肉冷片 2. 蒸石板魚 3. 紅燒肉 4. 燉羊肉 5. 豆腐肉丸子 6. 藕燉排...
    拾面埋伏閱讀 868評(píng)論 0 2
  • 女性保養(yǎng)卵巢的方法 1、少熬夜 “黑白顛倒”的生活,會(huì)使生物鐘發(fā)生紊亂,神經(jīng)內(nèi)分泌系統(tǒng)功能失調(diào),激素分泌不平衡,不...
    miss玲玲子閱讀 198評(píng)論 0 0
  • 善待他人,善待自己。心胸寬廣,可我還做不到啊! 師曰: 能做到知行合一,的確很難。 好難過(guò)。怎么辦? 師曰: 既然...
    菩提果zk張珂閱讀 195評(píng)論 1 1

友情鏈接更多精彩內(nèi)容