<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    內(nèi)蒙古java團(tuán)隊(duì)

    j2se,j2ee開發(fā)組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    所有的連接方式?
    ????首先選擇合適自己數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,這里提到的都是常用驅(qū)動(dòng)。
    連接Oracle數(shù)據(jù)庫(kù)
    ??獲得Oracle的驅(qū)動(dòng)程序包c(diǎn)lasses12.jar
    ??把Oracle的驅(qū)動(dòng)程序到\WEB-INF\lib下
    ??Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    ??Connection?conn=?DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:數(shù)據(jù)庫(kù)","用戶名","密碼");
    ?
    連接MYSQL數(shù)據(jù)庫(kù)
    ??獲得MySQL的驅(qū)動(dòng)程序包mysql-connector-java-3.0.15-ga-bin(mysqldriver.jar)
    ??拷貝到\WEB-INF\lib下
    ??Class.forName("org.gjt.mm.mysql.Driver").newInstance();
    ??Connection?conn=?DriverManager.getConnection("jdbc:mysql://localhost/testDB","用戶名","密碼"??);
    ?
    連接Sql?2000數(shù)據(jù)庫(kù)
    ??獲得SQL直接的驅(qū)動(dòng)程序包msbase.jar和mssqlserver.jar和msutil.jar
    ??把直?驅(qū)動(dòng)程序包放到\WEB-INF\lib下
    ??Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    ??Connection?conn=?DriverManager.getConnection(????"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=數(shù)據(jù)庫(kù)"","用戶名","密碼");
    ?
    橋連
    ??Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();;
    Connection?con=DriverManager.getConnection("jdbc:odbc:odbc名","用戶名","密碼");
    ?
    JTDS??
    net.sourceforge.jtds.jdbc.Driver
    jdbc:jtds:sqlserver://172.16.3.60:1433/test
    ?
    HIBERNATE
    它的配置連接方式通常有2中,1、hibernate.cfg.xml?靈活性高
    2、hibernate.properties?
    建議使用1配置,這里不在對(duì)2進(jìn)行多的闡述。
    當(dāng)程序啟動(dòng)時(shí),首先加載的是hibernate.properties?
    ,如果系統(tǒng)找不到此文件,會(huì)根據(jù)你程序的配置而執(zhí)行。
    這里講下常用配置
    Session?session=new?Configuration().configure().buildSessionFactory().openSession();
    如果按上述配置,則程序啟動(dòng)時(shí)候仍然首先找hibernate.properties?,找不到時(shí)候就會(huì)加載hibernate.cfg.xml
    (權(quán)限hibernate.properties>hibernate.cfg.xml)兩個(gè)文件都存在時(shí)候以hibernate.properties為主。
    ?
    ?
    ?
    ?
    記錄集(不建議使用記錄集操作記錄,涉及到什么時(shí)候關(guān)閉連接的頭疼問(wèn)題,常用的如LIST等對(duì)象)
    ??1、Statement?stat=con.prepareStatement("select?*?from?Login?where?id=?");
    ???stat.setString(1,textPinNo.getText());
    ??ResultSet?result=stat.executeQuery();
    ??注:("select?*?from?Login?where(?,?,?,?,?)")應(yīng)該與數(shù)據(jù)庫(kù)對(duì)應(yīng)
    ??2、Statement?stat=con.prepareStatement("select?*?from?Login?where?id="+變量);
    ??ResultSet?result=stat.executeQuery();
    ??如果是非查詢語(yǔ)句,則int?i=stat.executeUpdate();
    (注:驅(qū)動(dòng)后的“.newInstance()”可以不加。聲明、記錄集最基本的是statement、ResultSet還有其他更高級(jí)的)
    ?
    ?
    ?
    JDBC學(xué)習(xí)筆記-----jdbc性能優(yōu)化(轉(zhuǎn))
    jdbc程序的性能主要由兩個(gè)因素決定,一是數(shù)據(jù)庫(kù)本身的性質(zhì),另一個(gè)是與數(shù)據(jù)庫(kù)相對(duì)獨(dú)立的jdbc應(yīng)用程序接口(api)的使用.
    這里說(shuō)的是如何正確使用jdbc編程接口,以獲得更好的性能.
    ??jdbc主要優(yōu)化有:
    ?????1.選擇正確的jdbc驅(qū)動(dòng)程序
    ?????2.Connention的優(yōu)化??使用連接池來(lái)管理Connection對(duì)象
    ?????3.Statement的優(yōu)化???使用批量更新等
    ?????4.Result的優(yōu)化??正確的從數(shù)據(jù)庫(kù)中g(shù)et數(shù)據(jù)等
    ?????
    ?????(1)選擇正確的jdbc驅(qū)動(dòng)程序:
    ??1?jdbc-odbc?橋
    ????????????2?本地api-部分?java驅(qū)動(dòng)
    ????????????????3?jdbc網(wǎng)路協(xié)議-純java驅(qū)動(dòng)
    ????????????????4?jdbc本地協(xié)議
    ????????????????最好選擇?jdbc網(wǎng)路協(xié)議-純java驅(qū)動(dòng)??效率比較高??但需要第三方軟件的支持?比如corba??weblogic屬于這種類型
    ????
    ?????(2)優(yōu)化Connection對(duì)象:
    ?????????1.設(shè)置適當(dāng)?shù)膮?shù)??DriverManager.getConnection(String?url,Properties?props);
    ?????????????????例如:?????Properties?props=new?Properties();
    ??????props.put("user","wuwei");
    ??????props.put("password","wuwei");
    ????????????props.put("defaultRowPrefectch","30");
    ???????????????????????????props.put("dufaultBatchValue","5");
    ???????????????????????????Connection?con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
    ?????????????對(duì)象可以通過(guò)設(shè)置setDefaultRowPrefetch(int)?和?setDefaultBatchValue(int)?兩個(gè)參數(shù)類優(yōu)化連接
    ?
    ?2.使用連接池??可以自己寫一個(gè)連接池?這樣程序的靈活性強(qiáng),便于移植.
    ??????apache項(xiàng)目開發(fā)了一套非常通用而表現(xiàn)非常穩(wěn)定的對(duì)象池? http://jakarta.apache.org/commons/pool.htm
    ??????設(shè)計(jì)了自己的連接池后?在客戶端調(diào)用建立對(duì)象
    ???????????????????????????public?Object?makeObject()?throws?Exception{
    ????Class.forName("oracle.jdbc.driver.OracalDriver");
    ????return?DriverManager.getConnection("url","username","password");
    ??????}
    ??????????????????銷毀對(duì)象時(shí)用
    ??????public?void?destroyObject(Object?obj)?throws?Exception{
    ?????????((Connection)obj.close());
    ??????}
    ????????注意幾點(diǎn)?對(duì)象池里有沒(méi)有回收機(jī)制,對(duì)象池里有機(jī)有容量限制,對(duì)象池里有多少個(gè)閑置對(duì)象(可以釋放)????????
    ??
    ????????3.控制事務(wù)的提交??最好手動(dòng)提交事務(wù),不但可以可以保證數(shù)據(jù)原子性,而且對(duì)新能提高留下余地.
    ???????????????????try{
    ???connection.setAutoCommint(false);
    ????????????????????????//?代碼?用PreparedStatement??性能比Statementh好.
    ?
    ????????????????????????connection.commit();
    ????????????????????????connection.setAutoCommit(true);
    ?????}
    ????????????catch(SQLException?e){
    ???????????????????}
    ???????????????????finally{
    ???//代碼
    ???if(connection!=null){
    ??????connection.close();??
    ???}
    ???????}
    ?
    ?4.適當(dāng)?shù)倪x擇事務(wù)的隔離級(jí)別???TRANSACTION_READ_UNCOMMITED??性能最高
    ?????????????????????????????????????TRANSACTION_READ_COMMITED????快
    ?????????????????????????????????????TRANSACTION_REFEATABLE_READ??中等
    ????????????RANSACTION_SERIALIZABLE??????慢
    ?
    ???(3)Statement?優(yōu)化
    ??????jdbc3個(gè)接口用來(lái)處理sql的執(zhí)行,是Statement?PreparedStatement?CallableStatement
    ??????????提供適當(dāng)?shù)腟tatement接口?
    ??????????批量執(zhí)行sql
    ??????????從數(shù)據(jù)庫(kù)批量獲取數(shù)據(jù)
    ??????PreparedStatement?比Statement性能要好?主要體現(xiàn)在一個(gè)sql語(yǔ)句多次重復(fù)執(zhí)行的情況
    ??????PreparedStatemnt只編譯解析一次而Statement每次編譯一次.
    ??????
    ??????批量修改數(shù)據(jù)庫(kù)???
    ?Statement?提供了方法addBatch(String)和executeBatch()
    ????????調(diào)用方法為stmt.addBatch("isnert.....");?stmt.addBatch("update.....")
    ??????????????????stmt.executeBatch();
    ????????也可以用PreparedStatement從而更好的提高性能.
    ????????????????pstmt=conn.preparedStatement("insert?into?test_table(......)?values(....?)");
    ????????????????pstmt.setString(1,"aaa");
    ????????????????pstmt.addBatch();
    ????????????????pstmt.setString(1,"bbb");
    ????????????????pstmt.addBatch();
    ????????????????.....
    ????????????????pstmt.executeBatch();
    ?
    ??????批量地從數(shù)據(jù)庫(kù)中取數(shù)據(jù).
    ??????????通過(guò)setFetchSize()和getFectchSize()方法來(lái)設(shè)定和查看這個(gè)參數(shù).這個(gè)參數(shù)對(duì)體統(tǒng)的性能影響比較大.
    ??????????這個(gè)參數(shù)太小會(huì)嚴(yán)重地降低程序地性能.
    ???Connection?Statement?ResultSet都有這個(gè)參數(shù),他們對(duì)性能地影響順序是:
    ?????????????ResultSet---------Statement---------Connection
    ??(4)優(yōu)化ResultSet.
    ?????體現(xiàn)在以下幾個(gè)方面
    ????????批量讀取數(shù)據(jù).合理設(shè)置ResultSet的getFetchSize()和setFetchSize()方法中的參數(shù)
    ????????使用正確的get和set方法
    ?????????????使用整數(shù)而不是字段名作為參數(shù)性能比較高,
    ?????????????例如?setInt(1,100);
    ??????????????????setString(2,"aaaa");
    ???????????????比?setInt("id","100");
    ??????????????????setString("name","aaaa");
    ???????????????性能好
    ????????設(shè)置適當(dāng)?shù)臐L動(dòng)方向.有3個(gè)方向FETCH_FORWORD,FETCH_REVERSE?FETCH_UNKNOWN
    ?????????????單向滾動(dòng)性能比較高.
    ??其他方面的性能優(yōu)化
    ??????及時(shí)顯示的關(guān)閉Connection?Statement?ResultSet
    ??????????其中Connection可以用Connetion?Pool處理.
    ??????使用數(shù)據(jù)庫(kù)系統(tǒng)的強(qiáng)大查詢功能去組織數(shù)據(jù).這樣程序運(yùn)行是和數(shù)據(jù)庫(kù)服務(wù)的交互次數(shù)少,數(shù)據(jù)庫(kù)返回給
    ??????程序的記錄條數(shù)少的多,所以性能有很大的提高.
    主站蜘蛛池模板: 久久精品国产亚洲精品| 亚洲AV成人精品日韩一区18p| 久久久久久AV无码免费网站 | 免费观看在线禁片| 亚洲国产成人精品女人久久久| 香蕉97碰碰视频免费| 国产成人免费手机在线观看视频| 在线亚洲精品自拍| 成a人片亚洲日本久久| 久久福利青草精品资源站免费| 亚洲伊人久久精品影院| 国产精品成人69XXX免费视频| 三上悠亚亚洲一区高清| 日韩免费高清播放器| 91成人在线免费视频| 337p日本欧洲亚洲大胆色噜噜| 免费国产黄网站在线观看| 亚洲精品福利网泷泽萝拉| AV无码免费永久在线观看| 亚洲中文字幕久久精品无码A| 成人免费毛片观看| 日韩亚洲国产综合高清| 国产乱人免费视频| jizz免费观看| 亚洲国产精品成人久久| 18禁美女裸体免费网站| 亚洲国产精品无码第一区二区三区| 国产乱人免费视频| 国产婷婷成人久久Av免费高清| 亚洲毛片免费观看| 免费永久在线观看黄网站| 国产免费久久久久久无码| 在线免费观看a级片| 久热综合在线亚洲精品| 一本岛v免费不卡一二三区| 毛片视频免费观看| 亚洲精品视频在线| 91精品免费国产高清在线| 国产天堂亚洲精品| 大学生一级特黄的免费大片视频| 国产成人亚洲综合在线|