-
JDBC升級之替代產品:Commons-dbutils
????apache提供的一個jdbc開源的工具類庫,對傳統(tǒng)操作數據庫的類進行二次封裝,可以把結果集轉換成list
查看全部 -
dbcp和c3p0的比較:
查看全部 -
jdbc-c3p0連接池
① 導包:
????
② 在項目根目錄增加配置文件
????c3p0.properties ????(driverClassName/url/username/password/maxActive)
③ 編寫類文件,創(chuàng)建連接池
查看全部 -
通過代碼實現事務管理
Connection conn = DBUtil.getConnection();
第一步:關閉自動提交
????conn.setAutoCommit(false);
第二步:將代碼用 try catch 包圍
第三步:在catch內進行事務的回滾 conn.rollback(),在try中進行手動的事務提交 conn.commit()
查看全部 -
事務
事務是數據庫管理系統(tǒng)執(zhí)行過程中的一個邏輯單位
① 原子性:事務是一個完整的操作
② 一致性:當事務完成時,數據必須處于一致的狀態(tài)
③ 隔離線:對數據進行修改的所有并發(fā)事務是彼此隔離的
④ 永久性:事務完成后,它對數據庫的修改被永久保持
查看全部 -
C3P0jar
查看全部 -
dbcp配置
查看全部 -
dbcp jar
查看全部 -
JDBC調用有參數的存儲過程
查看全部 -
@JDBC---替代品之myBatis
MyBatis:支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。
特點:
??? 1:易于上手和掌握。
??? 2:SQL卸載XML里,便于統(tǒng)一管理和優(yōu)化。
??? 3:解除SQL與程序代碼的耦合。
??? 4:提供映射標簽,支持對象與數據庫的orm字段關系映射。
??? 5:提供對象關系映射標簽,支持對象關系組建維護。
??? 6:提供XML標簽,支持編寫動態(tài)SQL。查看全部 -
@JDBC---替代品之Hebernate
Hibernate:一種Java語言下的對象關系映射解決方案。它是一種自由,開源的軟件。
優(yōu)點:
??? 1:輕量級的ORM框架
??? 2:對JDBC進行了很好的封裝,使用了ORM做了映射,那么就可以通過面向對象的方式很容易的操作數據庫了。
??? 3:它還提供了緩存機制,可以提高效率。缺點:
??? 如果對大量的數據進行頻繁的操作,性能效率比較低,不如直接使用JDBC核心接口:
??? Session接口:Session接口負責執(zhí)行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句。)。
??? SessionFactory接口:SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創(chuàng)建Session對象。
??? Configuration接口:Configuration接口負責配置并啟動Hibernate,創(chuàng)建SessionFactory對象。
??? Transaction接口:Transaction接口負責事務相關的操作。它是可選的,開發(fā)人員也可以設計編寫自己的底層事物處理代碼。
??? Query和Criteria接口:Query和Criteria接口負責執(zhí)行各種數據庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。查看全部 -
@JDBC---替代品之DBUtils
核心接口:
1.DbUtils:提供如關閉連接,裝載JDBC驅動程序等常規(guī)工作的工具類;
2.QueryRunner:該類簡化了SQL查詢,它常與ResultSetHandler組合在一起使用
3.ResultSetHandler:執(zhí)行處理一個java.sql.ResultSet,將數據轉變并處理為任何一種形式,這樣有益于其應用而且使用起來更容易。 ?實例1:
final?String?SQL?=?"INSERT?INTO?test_1?VALUES(?,?)";
int?result?=?new?QuertRunner().update(conn,SQL,new?Object[]{"John","123"});
實例2:
finalString?SQL?=?"SELECT?*?FROM?test_1"; Test_1Bean?testBean?=?new?QuertRunner().quert(conn,SQL,new?HeanHandler(Test_lBean.class));
查看全部 -
@JDBC---連接池dbcp與c3p0總結
jar包、配置文件、獲取連接。
dbcp是Spring推薦,c3p0是Hibernate推薦。
查看全部 -
@JDBC---數據庫連接池之C3P0
1.導入相關C3P0的jar包
????c3p0-0.9.2-pre4.jar
????mchange-commons-java-0.2.2.jar
2.在項目根目錄下添加配置文件c3p0.propertiesc3p0.driverClassName="com.mysql.jdnc.Driver" c3p0.url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" c3p0.username="root" c3p0.password="root"
3.編寫類文件,創(chuàng)建連接池
public?class?C3P0Util{???? ???private?static?ComboPooledDataSource?ds=new?ComboPooledDataSource(); ?????public?static?Connection?getConnection(){ ?????????try{ ????????????return?ds.getConnection(); ?????????catch(SQLException?e){ ?????????????throw?new?RuntimeException(e); ?????????} ?????} }
查看全部 -
@JDBC---數據庫連接池之dbcp
1.導入相關dbcp的jar包
????commons-dpcp2-2.1.1.jar
????commons-pool2-2.4.2.jar
????commons-logging-1.2.jar2.在項目根目錄下添加配置文件dbcp.properties
????主要配置信息driverClassName="com.mysql.jdnc.Driver" url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" username="root" password="root"
3.實現dbcp連接池
public?class?DBCPUtil{??? ??//數據源,static??? ???private?static?DataSource?DS;???? ???//配置文件位置??? ???private?static?final?String?configFile?=?"/dbcp.properties";? ???//默認構造函數???? ???public?DBCPUtil(){???? ??????initDbcp();??? ??????}????? ????//初始化DS???? ????private?static?void?initDbcp(){?? ????Properties?pops?=?new?Properties();??????? ?????try{??????????? ????????//以流形式讀取配置文件?????????? ????????props.load(Object.class.getResourceAsStream(configFile));?? ?????????//創(chuàng)建數據源?????????? ?????????DS?=?BasicDataSourceFactory.createDataSource(pops); ???????????}catch(Exception?e){????? ??????????????e.printStackTrace();??? ??????????????????????}????????????????????????? ???????????????????}????????????????????????????????????????????????????????????? ??//連接數據庫???????? ???public?Connection?getConn(){?????? ??????Connection?con=null;???????? ????????if(DS!=null){??????? ???????????try{????????????? ?????????????//獲取連接??????????????? ???????????con=DS.getConnection();?????????? ?????????????}catch(Exception?e){??????? ????????????????e.printStackTrace(System.err);??????? ?????????????????????}???????????? ?????????????????try{???????? ?????????????????//設置成手動提交事務??????? ?????????????????con.setAutoCommit(false);???? ??????????????????}catch(SQLException?e){?? ???????????????????e.printStackTrace(System.err);???? ????????????????????}???????? ?????????????????????}??????? ??????????????????return?con;???? ??????????????????}??????????????????? ????????????}
查看全部
舉報