數(shù)據(jù)庫(kù)

數(shù)據(jù)庫(kù)開(kāi)發(fā)

JDBC

針對(duì)不同的數(shù)據(jù)庫(kù),使用JAVA程序進(jìn)行連接時(shí)會(huì)需要針對(duì)不同的數(shù)據(jù)庫(kù)的接口進(jìn)行編程;學(xué)習(xí),開(kāi)發(fā)成本相對(duì)較高。而JDBC就是針對(duì)這個(gè)問(wèn)題提出的方案,其向用戶(hù)提供了一套統(tǒng)一的API接口。

JDBC連接的體系架構(gòu):

JDBC體系架構(gòu)分為兩層。上層API層,下層數(shù)據(jù)庫(kù)驅(qū)動(dòng)層。上層的API層集成到JDK中了,下層的數(shù)據(jù)庫(kù)驅(qū)動(dòng)層一般由各大數(shù)據(jù)廠(chǎng)商實(shí)現(xiàn),需要到數(shù)據(jù)庫(kù)廠(chǎng)商官網(wǎng)下載。推薦使用maven進(jìn)行管理。

JDBC API

JDBC API提供了以下接口和類(lèi):

  • DriverManager: 這個(gè)類(lèi)管理數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的列表。內(nèi)容是否符合從Java應(yīng)用程序使用的通信子協(xié)議正確的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的連接請(qǐng)求。識(shí)別JDBC在一定子協(xié)議的第一個(gè)驅(qū)動(dòng)器將被用來(lái)建立數(shù)據(jù)庫(kù)連接。

  • Driver: 此接口處理與數(shù)據(jù)庫(kù)服務(wù)器通信。很少直接與驅(qū)動(dòng)程序?qū)ο?。相反,使用DriverManager中的對(duì)象,它管理此類(lèi)型的對(duì)象。它也抽象與驅(qū)動(dòng)程序?qū)ο蠊ぷ飨嚓P(guān)的詳細(xì)信息

  • Connection : 此接口與接觸數(shù)據(jù)庫(kù)的所有方法。連接對(duì)象表示通信上下文,即,與數(shù)據(jù)庫(kù)中的所有的通信是通過(guò)唯一的連接對(duì)象。

  • Statement : 可以使用這個(gè)接口創(chuàng)建的對(duì)象的SQL語(yǔ)句提交到數(shù)據(jù)庫(kù)。一些派生的接口接受除執(zhí)行存儲(chǔ)過(guò)程的參數(shù)。

  • ResultSet: 這些對(duì)象保存從數(shù)據(jù)庫(kù)后,執(zhí)行使用Statement對(duì)象的SQL查詢(xún)中檢索數(shù)據(jù)。它作為一個(gè)迭代器,讓您可以通過(guò)移動(dòng)它的數(shù)據(jù)。

  • SQLException: 這個(gè)類(lèi)處理發(fā)生在一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序的任何錯(cuò)誤

JDBC中的API可以在下面中查詢(xún):
http://docs.oracle.com/javase/7/docs/api/
中的Package java.sql中查閱。

步驟

  • 裝載驅(qū)動(dòng)程序
  • 建立數(shù)據(jù)庫(kù)連接
  • 執(zhí)行SQL語(yǔ)句
  • 獲取執(zhí)行結(jié)果
  • 清理環(huán)境
    注意 異常管理

高級(jí)技術(shù)
游標(biāo)提供了一種客戶(hù)端讀取部分服務(wù)端結(jié)果集的機(jī)制。其主要應(yīng)對(duì)的業(yè)務(wù)場(chǎng)景可能是用戶(hù)查詢(xún)的結(jié)果集太大,導(dǎo)致通信量,以及服務(wù)器性能的損失。
游標(biāo)的使用:略。

數(shù)據(jù)庫(kù)連接池

數(shù)據(jù)庫(kù)的連接池相當(dāng)于一組jar包,其負(fù)責(zé)對(duì)于連接的創(chuàng)建,管理,銷(xiāo)毀,和限流的作用。

連接池.png

連接池一般使用DBCP實(shí)現(xiàn)的。 參見(jiàn):http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi

SQL注入和防范

SQL Injection:就是通過(guò)把SQL命令插入到Web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。

基本的防范可以使用PreparedStatement來(lái)實(shí)現(xiàn)。

事務(wù)

事務(wù)時(shí)并發(fā)控制的基本單元,指作為單個(gè)邏輯工作單元的一系列操作。
事務(wù)具有四個(gè)特征:原子性( Atomicity )、一致性( Consistency )、隔離性( Isolation )和持續(xù)性( Durability )。這四個(gè)特性簡(jiǎn)稱(chēng)為 ACID 特性。

MyBatis

MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對(duì)配置和原生Map使用簡(jiǎn)單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。

使用方法和配置參考:
http://www.mybatis.org/mybatis-3/zh

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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