posts - 39,  comments - 263,  trackbacks - 0

          轉載請注明出處:http://www.aygfsteel.com/nake/
          ???自從
          java 發布的第一個版本開始就已經包含 JDBC 了。目前已經有 10 個年頭了。 JDBC4.0 將要被打包到 java6.0 里( java SE J2SE 新的名字)。它展現設計的重大提升和提供更加豐富的 API ,更加重視簡易開發和提高生產力

          ?????? 本文將討論一些 JDBC 在改善設計和提高性能上的重要的變化。但是不能列舉每一個變化。

          注解和泛型

          我想你已經了解了包含在 JAVA 5.0 的注解( annotations 和泛型( generic 也有翻譯范型)。 JDBC4.0 也引進了注解和泛型 DataSet ,這使得執行 sql 語句和 SQL? DML data manipulation? language 定義變的簡單。

          ?????? 在新的 API 里定義了一套 Query DataSet 接口。 Query 接口定義了一套方法,這些方法描述了 SQL select update 語句。而且詳細介紹了結果集如何綁定為一個 DataSet 的。因為泛型所以 DataSet 是可以帶參數的。因此可以說 DataSet 接口是類型安全的( type-saft .

          所有 Query 接口都要從 BaseQuery 接口繼承。可以通過 Connection.createQueryObject() 或者 DataSource.createQueryObject() 得到Query對象。

          一個DataSet接口都繼承java.util.List ? DataSet 是有列概念的數據集,能從 Query 接口得到,并且可以帶有參數。 DataSet 可以在連接和斷開連接的情況下使用。從而 DataSet 實現了 ResultSet (連接) 或者 ? CachedRowSet (可以斷開連接)。因為DataSetjava.util.List的子接口,所以可以通過java.util.Iterator來訪問每一行。

          DataSet 接口可以帶系統或者用戶自己定義的類作為參數。通過兩種方法你可以實現:構造函數或者 JavaBeans 對象,任何一個辦法都能達到將用戶自定義的類綁定到結果集的列里。但是在其它支持 JavaBeans 的框架里,用 JavaBeans 對象的實現就顯更加容易使用。

          下面簡單舉例說明如何通過新的 API 創建和運行 SQL 查詢。用用戶自定義的類來定義結果集。(拷貝時候小心有制表符)

          pubic class Employee {
          ?? private int employeeId;
          ?? private String firstName;
          ?? private String lastName;

          ?? public int getEmployeeId() {
          ??????return employeeId;
          ?? }
          ??
          ?? public setEmployeeId(int employeeId) {
          ??????this.employeeId = employeeId;
          ?? }

          ?? public String getFirstName() {
          ??????return firstName;
          ?? }

          ?? public setFirstName(String firstName) {
          ??????this.firstName = firstName;
          ?? }

          ?? pubic String lastName() {
          ??????return lastName;
          ?? }

          ?? public setLastName(String lastName) {
          ??????this.lastName = lastName;
          ?? }
          }

          interface EmployeeQueries extends BaseQuery {
          ?? @Select (sql="SELECT employeeId, firstName, lastName FROM employee")
          ?? DataSet<Employee> getAllEmployees ();

          ?? @Update (sql="delete from employee")
          ?? int deleteAllEmployees ();
          }


          Connection con = ...

          EmployeeQueries empQueries = con.createQueryObject (EmployeeQueries.class);

          DataSet<Employee> empData = empQueries.getAllEmployees ();

          ?

          異常處理的增強:

          1.?????? SQLException 分為兩類 transient non-transient

          2.?????? 支持連鎖的異常。

          3.?????? 繼承了 Iterable 接口。

          因為繼承了Iterable 所以你可以這樣寫:

          catch(SQLException ex) {
          ?? for(Throwable t : ex) {
          ??????System.out.println("exception:" + t);
          ?? }
          }

          SQLExceptions.JPG
          參考

        1. http://www.javaworld.com/javaworld/jw-05-2006/jw-0501-jdbc.html
        2. JSR 221: JDBC 4.0 Specification:
        3. http://www.jcp.org/en/jsr/detail?id=221
          未完

          posted on 2006-05-11 22:26 nake 閱讀(6769) 評論(4)  編輯  收藏

          FeedBack:
          # re: JDBC4.0 簡介
          2006-05-12 08:21 | dennis
          看起來蠻酷的,感覺怎么跟hibernate的Query很像.


            回復  更多評論
            
          # re: JDBC4.0 簡介
          2006-05-12 11:41 | Nelson
          jdk綁的東西越來越多了  回復  更多評論
            
          # re: JDBC4.0 簡介
          2006-05-13 13:54 |
          好東西,期待。  回復  更多評論
            
          # re: JDBC4.0 簡介[未登錄]
          2010-09-28 13:14 | 天行者
          很詳細,很全面。感謝分享。收藏了~  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(18)

          我參與的團隊

          隨筆檔案(39)

          收藏夾(1)

          搜索

          •  

          積分與排名

          • 積分 - 451385
          • 排名 - 119

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 崇信县| 兴和县| 玉山县| 从化市| 平罗县| 大名县| 平遥县| 大丰市| 大城县| 育儿| 江达县| 南郑县| 临澧县| 泗洪县| 北辰区| 嘉鱼县| 峨山| 南郑县| 诸城市| 当雄县| 邯郸市| 吉首市| 扎囊县| 玉田县| 建瓯市| 泸定县| 洛南县| 手机| 分宜县| 南部县| 仙桃市| 荥经县| 田阳县| 宜川县| 万宁市| 南召县| 醴陵市| 托克托县| 兴安盟| 新营市| 清新县|