數(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)毀,和限流的作用。

連接池一般使用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