亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? day04.txt

?? JDBC描述詳解JDBC描述詳解JDBC描述詳解JDBC描述詳解
?? TXT
字號:
JDBC_day04   langna  2007-9-11   星期二
一、JDBC2.0擴展
 
 1)DataSource:
    數據庫為了保證安全:用戶名和密碼經常換,并且很多時候我們根本就不知道用戶名和密碼;
    每個客戶端都要帶著JdbcUtil ,分發重復,所以我們就想到了數據源
    
    1、數據源是服務器產生和維護的;客戶端只需去取就行;(不需要分發;不用每個點都去更新;)
    2、客戶端通過jndi服務器獲得數據源的引用;
    
    數據源是由服務器產生的,連接數據庫用的,客戶端和服務器往往不在一臺機子上;
                    或不在一個虛擬機上;
    將數據源放到公共區域中,(數據庫不行)
 2)JNDI   
    JNDI:java的命名和路徑服務接口;
    Java Naming and Directory Interface (JNDI) 的命名操作
    
    JDBC和JNDI比較:   
    JDBC                                       JNDI
    接口集                                     接口集
    驅動                                        服務提供者
    物理存儲(數據庫)                    文件系統、注冊表、應用服務器等   
   
    
    JDBC 服務器:存儲的數據海量的,有規則的,需要大規模檢索;使用了SQL大規模的查詢語言;
                            (集裝箱)
    JNDI 服務器:存的是個別的,種類繁多的,不需要大規模檢索的;(儲藏室)
                存的都是java對象;
                存:bind(name,object);
                取:lookup(name);
     
     基本功能、結構一樣;
     存的量和存的方法不同;
 
   由于我們沒有應用服務器;(tomcat等帶有jndi服務器);
   (1)造數據源對象,一般都是服務器產生的,我們不需要寫;
   (2)放到jndi服務器上,也不需要我們掌握;
   (3)取數據源對象,需要我們掌握;
   
   jndi的驅動就能把文件系統當成物理存儲;加載驅動:(classpath)providerutil.jar/fscontext.jar
   (1) 在服務器上造數據源對象
   
    a. 連接jndi服務器:
      在c盤中建一個jdbc文件夾;即提供jndi服務; 
      驅動的參數;
      url:文件系統;file:c:/jdbc   (file:/home/soft/jdbc)//創建一個jndi服務器
      
       Context ctx=null;
       ctx=new InitialContext(env);
       
    b. 造一個數據源對象
        OracleDataSource  ods=new OracleDataSource();
        ods.setDriverType("thin");
        ods.setServerName("192.168.0.201");
        ods.setNetworkProtocol("tcp");
        ods.setPortNumber(1521);
        ods.setDatabaseName("tarena");
        ods.setUser("xjh0704");
        ods.setPassword("xjh0704");
    c. 將數據源對象存入jndi服務器
      ctx.bind("oracle20",ods);
       
   (2)寫一個客戶端:
    
    a.連接jndi服務器
    Hashtable  env=new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
    env.put(Context.PROVIDER_URL, "file:c:/jdbc");
    ctx=new InitialContext(env);
    b.獲得數據源對象
    DataSource  ds=(DataSource)ctx.lookup("oracle20");
    c.操作數據庫
    Connection con=ds.getConnection();
	Statement st=con.createStatement();
	ResultSet rs=st.executeQuery("select * from ln_student");
	while(rs.next()) {
		System.out.print(rs.getInt(1)+"\t");
		System.out.print(rs.getString(2)+"\t");
		System.out.print(rs.getString(3)+"\t");
		System.out.println();
        }
    
     jndi就是放藏寶圖的地方;而數據庫就是寶藏,它肯定存在;需要藏寶圖去訪問它;
    
 3)連接池:
    事先把連接準備好,一般用數據源得到的連接都是池里的連接;
    并在程序使用過之后不關閉連接,再放回連接池中等
    待其他的程序在需要時來取用,這樣可以大量的節省銷毀和創建連接的資源消耗。 
 4)分布式事務:
    a數據庫:T1 提交 ,--> 轉帳 --> b數據庫:T2回滾;沒有辦法控制
    
    將T1和T2合起來作為一個事務;
    必須有第三方;weblogic,websphere 等應用服務器;
    T1交給應用服務器,T2也交給應用服務器,每一個監控都有資源管理器;
    所有資源管理器都讓提交才能提交;
    分布式的事務都是通過聲明的配置進行的;
    
    針對多個不同數據庫同時操作,要保證原子操作的不可分割,
    也不用再自己寫commit,和rollback,全部都交給中間服務器來處理。
   (兩階段提交),也就是在中間服務器發送sql語句等待數據庫回應,
    都回應操作成功才提交,否則同時回滾。
    
    除非特別大的公司,一般不用分布式事務;
    
  5)RowSet:行集
      桌面上做快速開發的組件;將Connection,ResultSet,Statement集于一身;
      是一個JavaBean的機制;
      (1)綜合對象
      (2)JavaBean的結構,可以有圖形界面、事件機制、序列化;
              自帶緩沖區,可以在網絡上傳遞
      缺點:
      不夠靈活
      行集不屬于jdbc的主流技術,ojdbc14 沒有它的實現類;
      提供一個jar包:rowset.jar
      
      CachedRowSetImpl crs=null;
	try{
       //1.注冊驅動
       Class.forName("oracle.jdbc.driver.OracleDriver");
       //2. 建立數據庫連接并執行sql語句
       crs = new CachedRowSetImpl();
       crs.setUrl("jdbc:oracle:thin:@192.168.0.201:1521:tarena");
       crs.setUsername("xjh0704");
       crs.setPassword("xjh0704");
       crs.setCommand("select * from ln_student");
       crs.execute();
	   
       //3.更新操作
       crs.moveToInsertRow();
       crs.updateInt("id", 99988878);
       crs.updateString("name", "tony");
       crs.insertRow();
       crs.moveToCurrentRow();
       crs.acceptChanges();
       

       //4. 處理結果集
       JdbcUtil.printRs(crs);
       crs.first();
       System.out.println(
    	   "=============== crs.first() ===============");
       JdbcUtil.printRs(crs);
	   
       }catch(Exception e){ e.printStackTrace();}
      finally{
        JdbcUtil.close(crs);
 	}
  }
  
  
二、面向對象的數據庫設計
     
     對象ID:Accout a1,a2 ;
     對象唯一性:變成記錄存到數據庫中,然后讀出來時也要保證唯一;     
     對象在內存中天然的是唯一的,根據內存地址來區分;
     但是存內存地址又是無意義的;java中不能存,即使用c++能存,但是這塊內存是要被釋放掉的;
     再放對象的話,有可能構成重復;
   
     內存中的對象放到數據庫中要保證OID:
     1)不重復;
     2)足夠使用;
     分配OID的計數器必須是公用的,并且不能重復;
     Oracle 中用sequence;或維護一個一行一列的表;并發時;但是性能上潛在不太好;
     
 1、數學中的高低位算法:HighLow算法
      對于一個應用程序:只讀一次 :高位;
      在數據庫存一個公共計數器:
      表里存的是高位:1 2 3 ... ;
      在本機配一個私有計數器:
      應用程序1)配一個低位值10001給一個對象,再來一個對象10002...
      應用程序2)配一個低位值20001給一個對象,再來一個對象20002...
      中國086-
      北京:010-
      廣州:020-
      上海:021-
 
2、 類應當對應到表,屬性對應字段,對象對應記錄。
      類之間的關系對應表之間的關系或對應表;
      
      繼承關系:父類子類;
      關聯關系:有方向的;
      
      OID作主鍵;
      對于一個引用對象,存到另外一張表里;
      
      (1) 繼承關系的表建立:
      
      1)每個類建一個表,為父子類每個類都對應的創建表,這種方法類關系清晰,
           但是如果類比較多就不適合了;
           
           父類的OID為外鍵,子類引用父類的OID,存一個子類的對象會存兩個表的兩條記錄;
           體現繼承關系;
           
           特點:
           最接近于面向對象的結構;
           查詢效率低,任何一個查詢都要連接表;不利于做報表;
           
           在類比較多的情況下用這個;
           
      2)所有類對應一張表,這種方法是在表中加上一個Type字段來區分父子類,
           但是只能用于類屬性較少的情況下,而且數據會有冗余。
           
           特點:
           結構簡單,就一個表,查詢效率高,做報表也很方便;
           表太大,不太好維護,做索引不好做;子類的字段可以為空的;
           
           這種用法還是比較多的;
           
      3)只有具體類才建表,也就是把父類中的屬性均勻分配到子類的表中,
           也就是父類不建表,這種表關系不能使用多態;所有的父類字段都出現在
           子類的表中,定義冗余;
           
           特點:
           查詢效率也不是很高;
           對多態支持不好;
           
           優點不太突出,用的很少;
           
    (2) 關聯關系的表的建立:
         一對一:汽車和發動機;看類之間引用的數目;
         一對多:訂單中有多個訂單項的引用;
                     (維護一個訂單項的集合)1:m(維護一個訂單的引用)
         多對多:客戶和地址;m:m
                      通過中間表來維護;
                      中間表引用兩表的主鍵當作聯合主鍵,就可以實現多對多關聯

 三、類型轉換查API即可;
 
 四、程序設計:
   1、程序分層
        (1)什么叫分層?幾種分層的方法?
        
        兩種分層的方法:
        1)縱向分層:J2EE/JavaEE 按功能劃分:
        
        web層: 圖形界面,跟用戶做I/O的;
                      技術:Servlet,JSP(JSF/Ajax),Struts
                      
        業務層: 業務處理、計算;
                      POJO(JavaBean),EJB,Spring
                      
        持久層:   OR/Mapping;對象關系之間的轉化;跟數據庫打交道
                      JDBC,Hibernate
      
        2)橫向劃分:按抽象程度劃分;
       
        JDBC:接口集(抽象層)--驅動(實現層)
         
        web:實現層  5
                 
        業務:抽象層  1
                  實現層  3
        持久:抽象層  2
                  實現層  4
        
    業務層的抽象-->持久層的抽象-->業務層的實現-->持久層的實現--> 畫界面(web)
    
    (2)為什么要分層:
        
         1) 使得程序符合設計原則;
             因為設計原則來源于實踐和需求 ;

             開閉原則:對擴展開放,對修改關閉;
             依賴于抽象:不依賴于具體,減少耦合性;
                                組件和組件之間抽象耦合:
                                web層調用業務層的接口;
                                業務層調用持久性的接口;
                                
          2) 物理原因:web服務器和應用服務器和數據庫服務器不在同一個地方;      
          3) 便于維護;便于擴展;便于交付使用;
                設計:15%
                開發:15%
                測試:10%
                維護:60%
                
          以后的課程慢慢去體會;
  
  補充:
          
           CallableStatement  cs=con.prepareCall("{call  ln_pro_test(?)}");//調存儲過程, p_test為存儲過程的名字;  
           1)  存儲過程是預編譯的;
           2)  為了安全;在代碼中不能出現sql;從外部訪問數據庫沒法訪問;只能用存儲過程;
          可以寫到sql文件里 ln.sql:  
         
          create or replace  procedure ln_pro_test(i in number)as
          begin
          insert into ln_student values(i,'langna','shanghai');
          end;
          
          @ln.sql;/
          
         存儲過程相當于sql 語句,可以當腳本執行;
           
                con=JdbcUtil.getConnection();
        	cs=con.prepareCall("{call  ln_pro_test(?)}");
        	cs.setInt(1,14);
        	cs.execute();
        	
 五、分析項目:
        1、定義業務接口,AccountService: 存,取,轉帳
        2、定義持久層接口,AccountDao:存,取,轉帳
         轉帳沒有更新數據;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区国产豹纹内裤在线 | 欧美无乱码久久久免费午夜一区| 国产精品一区二区在线播放| 久久国产日韩欧美精品| 亚洲小少妇裸体bbw| 日本成人在线一区| 激情另类小说区图片区视频区| 午夜精品久久久久久久久久| 日韩一区精品字幕| 国产精品一区2区| 国产精品一区二区久久精品爱涩| 国产在线精品一区在线观看麻豆| 精品在线播放午夜| 99精品偷自拍| 欧美三级视频在线播放| 欧美tickling网站挠脚心| 国产三级精品视频| 亚洲国产电影在线观看| 热久久免费视频| 99亚偷拍自图区亚洲| 91精品国产黑色紧身裤美女| 国产精品国模大尺度视频| 一区二区三区资源| 亚洲成人资源网| 成人精品高清在线| 精品精品国产高清一毛片一天堂| 亚洲日本va午夜在线影院| 免费成人在线网站| 成人高清免费观看| 日韩一卡二卡三卡国产欧美| 亚洲毛片av在线| 国产不卡一区视频| 26uuu成人网一区二区三区| 亚洲v日本v欧美v久久精品| 成人免费毛片嘿嘿连载视频| 欧美精品精品一区| 亚洲高清久久久| 欧美精品一级二级| 日韩精品成人一区二区三区| 97久久超碰国产精品| 中文字幕一区二区三区av| 国模娜娜一区二区三区| 在线播放国产精品二区一二区四区 | 久久成人av少妇免费| 欧美日韩一级片网站| 亚洲国产综合91精品麻豆| 成人app下载| 亚洲欧美日韩久久| 欧美色综合天天久久综合精品| **欧美大码日韩| 99国产精品视频免费观看| 久久久亚洲高清| 久久爱另类一区二区小说| 国产亚洲一区二区三区四区| av亚洲精华国产精华精华| 中文字幕日韩欧美一区二区三区| 91亚洲大成网污www| 亚洲女与黑人做爰| 日韩三级电影网址| 国产99久久精品| 一区二区三区精品| 久久久久久亚洲综合| 91免费在线看| 日韩国产精品久久久| 国产亚洲制服色| 丰满少妇在线播放bd日韩电影| 国产精品久久久久久久久快鸭 | 成人高清视频免费观看| 日本欧美一区二区| 中文字幕在线一区| 日韩一区二区免费高清| 色系网站成人免费| 久久超级碰视频| 亚洲成人免费观看| 国产精品白丝在线| 久久青草国产手机看片福利盒子| 在线亚洲精品福利网址导航| 久88久久88久久久| 亚洲成av人片| 中文字幕中文字幕在线一区| 欧美不卡激情三级在线观看| 欧美三日本三级三级在线播放| 成人午夜电影小说| 国产成人丝袜美腿| 国产精品12区| 狠狠色丁香婷综合久久| 午夜视黄欧洲亚洲| 亚洲欧美激情插| 亚洲欧美激情小说另类| 日本一区二区三区国色天香| 欧美一二区视频| 日韩一区二区在线观看视频 | 精品久久久久久最新网址| 日韩精品中午字幕| 久久久99精品久久| 国产欧美一区在线| 亚洲精品一卡二卡| 亚洲日本一区二区三区| 亚洲精品免费在线播放| 一区二区三区四区不卡在线| 亚洲图片有声小说| 精品一区二区三区在线播放| 国产剧情一区在线| 欧美日韩视频第一区| 欧美一级理论片| 国产日韩v精品一区二区| 亚洲色图欧美激情| 青青草成人在线观看| 成人av电影观看| 日韩精品专区在线影院重磅| 久久婷婷一区二区三区| 亚洲国产成人精品视频| 国产大陆a不卡| 欧美日韩一区二区在线观看| 久久久综合九色合综国产精品| 91浏览器打开| 欧美高清dvd| 玉米视频成人免费看| 国产成人av电影在线播放| 91精品综合久久久久久| 亚洲色欲色欲www| 国产精品1区2区| 精品盗摄一区二区三区| 亚洲国产精品一区二区尤物区| 成人av网址在线| 久久一日本道色综合| 国模大尺度一区二区三区| 欧美变态tickling挠脚心| 日本不卡123| 欧美精品电影在线播放| 亚洲综合色成人| 欧美精品18+| 毛片av一区二区| 久久免费电影网| 成人一级片在线观看| 国产精品情趣视频| 91视频免费看| 亚洲大片精品永久免费| 日韩一区二区免费视频| 精品一区二区在线看| 国产精品国产三级国产普通话蜜臀 | 国产不卡在线播放| 亚洲嫩草精品久久| 91精品国产一区二区三区香蕉| 日本不卡视频在线观看| 精品99久久久久久| 97久久人人超碰| 午夜精品爽啪视频| 国产午夜亚洲精品羞羞网站| 波多野结衣的一区二区三区| 亚洲大型综合色站| 欧美激情在线免费观看| 日韩你懂的在线观看| 激情成人综合网| 亚洲精品国产品国语在线app| 精品欧美一区二区三区精品久久| 欧美日韩国产首页| 制服.丝袜.亚洲.另类.中文| 欧美天堂亚洲电影院在线播放| 色综合色狠狠综合色| 不卡av在线网| 欧美午夜片在线观看| 在线不卡欧美精品一区二区三区| 337p亚洲精品色噜噜| 精品国产91洋老外米糕| 久久久99精品免费观看不卡| 中文字幕一区av| 五月综合激情网| 久久综合九色综合久久久精品综合| av影院午夜一区| 国产福利一区二区三区| 狠狠网亚洲精品| 精品一区精品二区高清| 久久成人综合网| 久久99精品国产麻豆婷婷洗澡| 蜜乳av一区二区| 久久99国产精品久久99| 狠狠色丁香婷婷综合| 国产盗摄一区二区| 91麻豆精品秘密| 欧美精品久久久久久久多人混战| 91精品国产91久久久久久一区二区| 91精品国产麻豆国产自产在线| 欧美一卡2卡三卡4卡5免费| 91精品国产综合久久久久| 精品国产人成亚洲区| 欧美国产亚洲另类动漫| 亚洲国产一区二区a毛片| 蜜臀精品久久久久久蜜臀| 国产二区国产一区在线观看| 一本大道久久a久久精二百| 欧美丰满少妇xxxbbb| 国产精品麻豆一区二区| 亚洲成a人在线观看| 国产91精品在线观看| 欧美日韩国产乱码电影| 欧美经典一区二区| 九色综合狠狠综合久久| 99精品热视频| 精品999在线播放|