黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

JDBC4 簡(jiǎn)介

系統(tǒng) 2825 0

轉(zhuǎn)載請(qǐng)注明出處: http://www.blogjava.net/nake/
???自從
? java ? 發(fā)布的第一個(gè)版本開始就已經(jīng)包含 ? JDBC ? 了。目前已經(jīng)有 ? 10 ? 個(gè)年頭了。 ? JDBC4.0 將要被打包到 ? java6.0 ? 里( ? java SE? ? J2SE ? 新的名字)。它展現(xiàn)設(shè)計(jì)的重大提升和提供更加豐富的 ? API ? ,更加重視簡(jiǎn)易開發(fā)和提高生產(chǎn)力 ? 。

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

注解和泛型

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

??????? 在新的 ? API ? 里定義了一套 ? Query ? ? DataSet ? 接口。 ? Query ? 接口定義了一套方法,這些方法描述了 ? SQL ? ? select? ? update ? 語句。而且詳細(xì)介紹了結(jié)果集如何綁定為一個(gè) ? DataSet ? 的。因?yàn)榉盒退? ? DataSet ? 是可以帶參數(shù)的。因此可以說 ? DataSet ? 接口是類型安全的( ? type-saft ? .

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

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

DataSet ? 接口可以帶系統(tǒng)或者用戶自己定義的類作為參數(shù)。通過兩種方法你可以實(shí)現(xiàn):構(gòu)造函數(shù)或者 ? JavaBeans? 對(duì)象,任何一個(gè)辦法都能達(dá)到將用戶自定義的類綁定到結(jié)果集的列里。但是在其它支持 ? JavaBeans ? 的框架里,用 ? JavaBeans? 對(duì)象的實(shí)現(xiàn)就顯更加容易使用。

下面簡(jiǎn)單舉例說明如何通過新的 ? API ? 創(chuàng)建和運(yùn)行 ? SQL? 查詢。用用戶自定義的類來定義結(jié)果集。(拷貝時(shí)候小心有制表符)

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 ();

?

異常處理的增強(qiáng):

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

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

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

因?yàn)槔^承了 Iterable? 所以你可以這樣寫:

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

?

?

最后,注:hibernate 3.5已經(jīng)添加了對(duì)JDBC4的支持

JDBC4 簡(jiǎn)介


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論