Google announces a new topic now: Google Reader. It's a web rss reader. You can log in with your Gmail account. It can edit blog's categories, all functions are ease to use. I propose you to use this. :)
          posted @ 2005-10-17 16:03 羅明 閱讀(535) | 評論 (0)編輯 收藏
           
          i have just installed Ubuntu. It's a linux based on Debian. The whole system is very beautiful and ease to use, and i think the support for Chinese is also excellent, although???? there are no zh input languages yet. I'm now finding one.

          The necessary apps are all there.

          (i had a problem on connecting internet, later i found i hadn't plugged the network cable : ) )

          i think i will be a linux "tiger" soon.

          Go on, be a tiger.
          posted @ 2005-10-10 12:27 羅明 閱讀(377) | 評論 (0)編輯 收藏
           
          i have just installed Ubuntu. It's a linux based on Debian. The whole system is very beautiful and ease to use, and i think the support for Chinese is also excellent, although there are no zh input languages yet. I'm now finding one.

          The necessary apps are all there.

          (i had a problem on connecting internet, later i found i hadn't plugged the network cable : ) )

          i think i will be a linux "tiger" soon.

          Go on, be a tiger.
          posted @ 2005-10-08 19:51 羅明 閱讀(123) | 評論 (0)編輯 收藏
           

          公告

          • 希望大家經常過來,Blog就是寫給大家看的,對吧,呵呵:)
          • 請大家在轉載的時候一定要注明作者(Andyluo)和出處(http://spaces.msn.com/members/andyluo197),謝謝合作
          posted @ 2005-10-07 08:36 羅明 閱讀(145) | 評論 (0)編輯 收藏
           

          問題虛擬背景:
          A項目組要實現一個基于Sql Server的應用,但工作環境只安裝有MySql(公司對開源比較看好: )),而且客戶有可能會轉移到Oracle數據庫環境。要求應用具有數據庫移植能力和快速更換能力,使應用在工作環境調試成功后能迅速轉移到客戶的Sql Server環境,而且將來可以方便地轉向Oracle。

          Andy提出的可用方案:
          1、使用標準JDBC
          2、使用抽象類定義數據訪問單元
          3、定義具體數據源訪問單元繼承2中接口

          代碼示例:
          定義數據訪問單元抽象類,包含數據訪問邏輯

          publicabstractclassDataManager
          {
          protectedstaticStringconString=null;
          protectedstaticStringurlString=null;
          publicDataType[]getData()
          {
          //fetchdatausingstandardJDBCwithconStringandurlString
          }


          publicvoidsetData(DataType[]dataArray)
          {
          //storedatausingstandardJDBCwithconStringandurlString
          }

          }

          定義具體數據源訪問單元

          publicclassHsqlDataManagerextendsDataManager
          {
          static
          {
          conString
          ="org.hsqldb.jdbcDriver";
          urlString
          ="jdbc:hsqldb:db/YourDatabaseName";
          }

          }


          publicclassOdbcBlogManagerextendsAbstractBlogManager
          {
          static
          {
          conString
          ="sun.jdbc.odbc.JdbcOdbcDriver";
          urlString
          ="jdbc:odbc:db/YourDatabaseName";
          }

          }


          在調用數據訪問層時,可以聲明一個DataManager的引用,然后在構造器中實例化為具體子類,如:

          publicclassAndy
          {
          privateDataManagerdataManager=null;

          publicAndy
          {
          dataManager
          =newHsqlDataManager();
          //或者在資源文件里填寫具體子類,然后在這里動態加載并實例化
          }


          publicvoiddoSomething()
          {
          dataManager.getData();

          }

          }


          以后要遷移到另一個數據庫(有JDBC驅動),只需定義具體子類繼承DataManager(如HsqlDataManager),然后修改資源文件中的DataManager名稱(或者將new的類名改一下),不需要修改代碼。

          這興許可以解釋另一個問題:不贊成使用存儲過程,而應將SQL語句嵌在代碼中(適用于Java;微軟注定.Net不會有平臺移植性,數據庫大都用Sql Server,所以寫存儲過程還是比較好的)。

          (我在我的一個Eclipse RCP項目里使用了這種模式,從Sql server 2000到Hsql,特別方便,看起來感覺也比較好)

          歡迎大家拍轉,^_^

          posted @ 2005-10-07 00:36 羅明 閱讀(96) | 評論 (0)編輯 收藏
           

          Job代表一個異步操作。
          要執行的操作在run方法里。

          //定義一個Job
          classAJobextendsJob
          {
          publicAJob()
          {
          super("Andy'sJob");
          }


          publicIStatusrun(IProgressMonitormonitor)
          {
          System.out.println(
          "ThisisAndy'sJob");
          returnStatus.OK_STATUS;
          }

          }



          schedule后,任務在平臺線程等待隊列中排隊,等待調度執行。
          調用方式1:

          //異步調用
          AJobjob=newAJob();
          job.schedule();
          //喚起平臺線程來調度這個Job

          調用方式2:

          //結束后再運行
          AJobjob=newAJob();
          job.schedule();
          //dosomeotherthings.
          job.join();//block,直到job完成或調用線程被中斷
          if(job.getResult().isOk())
          {
          //Jobcompletedwithsuccess.
          }

          else
          {
          //Jobdidnotcompletesuccessfully.
          }


          取消一個Job:
          if(!job.cancel())
          {
          job.join();
          }
          //cancel可能不會立即成功,我們用join等待cancel操作完成。
          posted @ 2005-10-06 23:35 羅明 閱讀(147) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第七章 - 數據庫元數據(關鍵類、獲取信息、查看特性、查看限制、事務支持、新增方法、方法更新) - 譯文

          數據庫元數據

          第7章 數據庫元數據

          JDBC驅動通過實現DatabaseMetaData接口來提供底層數據源的信息。DatabaseMetaData接口主要被應用服務器和工具使用,以此決定怎樣跟給定數據源交互。應用也可以通過DatabaseMetaData的方法得到數據源的信息,但這不常用。

          DatabaseMetaData?接口有超過150個方法,根據提供的信息可以分為以下幾類:

          DatabaseMetaData?接口還有超過40個字段,這些字段用于DatabaseMetaData中各種方法的常量返回值。

          這一章粗略介紹一下DatabaseMetaData接口,通過舉例子對元數據方法進行分類,同時介紹一些新的方法。詳細介紹請參考JDBC 4.0 類庫規范

          JDBC中的ResultSetMetaData接口將在第15章“結果集”介紹。

          7.1 創建DatabaseMetaData對象

          DatabaseMetaData?對象由Connection的getMetaData方法創建,然后我們可以利用它來動態獲取底層數據源的信息。代碼示例 7-1 創建了一個DatabaseMetaData對象,并用它來查看表名允許的最大字符數。

          // con是一個Connection對象
          DatabaseMetaData dbmd = con.getMetadata();
          int maxLen = dbmd.getMaxTableNameLength();
          

          代碼示例 7-1 創建和使用DatabaseMetaData對象

          7.2 獲取一般信息

          DatabaseMetaData?中有一類方法用于獲取底層數據源的一般信息,或者它的一些實現細節。這類方法有:

          7.3 查看支持的特性

          大量DatabaseMetaData方法可以用來判斷驅動或底層數據源是否支持某個特性或特性集。還有一些方法可以告知提供支持的級別。

          判斷是否支持某個特性的方法如下:

          查看特性支持級別的方法:

          7.4 數據源限制

          另一組方法提供數據源對操作的限制信息,如下:

          方法返回一個整型的限制數。0表示沒有限制或未知限制。

          7.5 SQL對象及其屬性

          DatabaseMetaData?中有一組方法提供組成數據源之SQL對象的信息。這組方法也包含獲取SQL對象屬性的方法。方法的返回值是一個ResultSet,ResultSet的每一行代表一個特定對象。例如,getUDTs方法返回的ResultSet里每一行都是數據源里定義的一個UDT(user-defined type)。這類方法主要有:

          7.6 事務支持

          一小部分方法提供數據源所支持事務的語義信息。這類方法主要有:

          7.7 新增方法

          JDBC 4.0 類庫在DatabaseMetaData中引入了下列新方法:

          這些方法的完整定義見JDBC 4.0 類庫規范(javadoc)。

          7.8 經過修改的方法

          JDBC 4.0 類庫修改了DatabaseMetaData中下列方法的定義: (原文:Clarified to indicate that if the database supports SQL distinct types, then getTypeInfo() will return a single row with a TYPE_NAME of DISTINCT and a DATA_TYPE of Types.DISTINCT. If the database supports SQL structured types, then getTypeInfo() will return a single row with a TYPE_NAME of STRUCT and a DATA_TYPE of Types.STRUCT. Support has also been added for the new data types SQLXML and ROWID.)

          (原文:Clarified that the method retrieves a description of the foreign key columns in the given foreign key table that reference the primary key or the unique constraint columns of the parent table (could be the same or a different table). The number of columns returned from the parent table must match the number of columns that make up the foreign key. They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ.)

          (Clarified that the return value for COLUMN_DEF that the default value for the column, should be interpreted as a string when the value is enclosed in quotes.)

          JDBC 4.0 類庫規范中有這些方法更新后的定義。

          翻譯進度請參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4說明書

          posted @ 2005-10-06 21:58 羅明 閱讀(262) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第六章 - 兼容性(定義、指導原則、JDBC 1.0、2.0、3.0、4.0、決定級別、不贊成使用的API) - 譯文

          兼容性

          第6章 兼容性

          這一章描述了JDBC類庫實現在各個兼容級別要支持的特性。一個JDBC類庫實現包含了一個JDBC驅動和底層數據源。兼容性定義了在驅動層之上要實現的特性。

          任何沒有提到的特性都是可選的。通常,如果底層數據源不支持,驅動不需要實現這個特性。

          6.1 定義

          為了避免混淆,我們將在兼容性的討論中使用以下術語:

          6.2 指導原則和要求

          下列指導原則適合所有級別的兼容性:


          入門級別SQL92(Entry Level SQL92)是JDBC類庫實現要支持的最低SQL級別。對SQL99或SQL2003中特性的訪問應該與SQL99或SQL2003規范的相關部分一致。


          注意 :JDBC類庫實現要支持“SQL92 - 過渡級別”中定義的DROP TABLE命令,但對CASCADE和RESTRICT選項的支持 是可選的。而且,當要被刪除的表有視圖(views)和完整性約束時,DROP TABLE的行為也是實現類庫的廠商自己定義的。

          6.3 JDBC 1.0 類庫兼容性

          與JDBC 1.0 類庫兼容的驅動應滿足以下條件:

          6.4 JDBC 2.0 類庫兼容性

          與JDBC 2.0 類庫兼容的驅動應滿足以下條件:

          6.5 JDBC 3.0 類庫的兼容性

          與JDBC 3.0 類庫兼容的驅動應滿足以下條件:

          6.6 JDBC 4.0 類庫的兼容性

          與JDBC 4.0 類庫兼容的驅動應滿足以下條件:


          注意 :這一段將在下一版草案更新

          6.7 決定兼容級別

          JDBC 類庫是Java平臺不可或缺的一部分。與JDBC類庫規范兼容是與整個平臺兼容的一個子集。


          注意 :在編寫這個文檔之際,還沒有獨立于平臺檢查JDBC類庫兼容級別的。

          6.8 不贊成使用的類庫

          不贊成使用是針對類、接口、構造器、方法或字段來說的,即不再被推薦使用,而且可能在將來某個版本不復存在。

          JDBC 2.0類庫中不贊成使用的構造器和方法: java.sql.CallableStatement.getBigDecimal(int, int)

          java.sql.Date(int, int, int)
          java.sql.Date.getHours()
          java.sql.Date.getMinutes()
          java.sql.Date.getSeconds()
          java.sql.Date.setHours(int)
          java.sql.Date.setMinutes(int)
          java.sql.Date.setSeconds(int)

          java.sql.DriverManager.getLogStream()
          java.sql.DriverManager.setLogStream(PrintStream?)

          java.sql.PreparedStatement.setUnicodeStream(int, InputStream?, int)

          java.sql.ResultSet.getBigDecimal(int, int)
          java.sql.ResultSet.getBigDecimal(String, int)
          java.sql.ResultSet.getUnicodeStream(int)
          java.sql.ResultSet.getUnicodeStream(String)

          java.sql.Time(int, int, int)
          java.sql.Time.getDate()
          java.sql.Time.getDay()
          java.sql.Time.getMonth()
          java.sql.Time.getYear()
          java.sql.Time.setDate(int)
          java.sql.Time.setMonth(int)
          java.sql.Time.setYear(int)

          java.sql.Timestamp(int, int, int, int, int, int, int)

          也可參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/兼容性

          posted @ 2005-10-06 19:25 羅明 閱讀(232) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第五章 - 類和接口(java.sql包、javax.sql包) - 譯文

          類和接口

          第五章 類和接口

          以下類和接口組成了JDBC類庫

          5.1 java.sql包

          JDBC核心類庫包含在java.sql包中。java.sql包中的注釋(annotations)、枚舉、類和接口如下。注釋、枚舉和類使用粗體;接口使用正常字體。

          java.sql.AutoGeneratedKeys
          java.sql.Array
          java.sql.BaseQuery
          java.sql.BatchUpdateException
          java.sql.Blob
          java.sql.CallableStatement
          java.sql.ClientInfoException
          java.sql.Column
          java.sql.Clob
          java.sql.Connection
          java.sql.DataSet
          java.sql.DataTruncation
          java.sql.DatabaseMetaData
          java.sql.Date
          java.sql.Driver
          java.sql.DriverManager
          java.sql.DriverPropertyInfo
          java.sql.NClob
          java.sql.ParameterMetaData
          java.sql.PreparedStatement
          java.sql.Query
          java.sql.QueryObjectFactory
          java.sql.QueryObjectGenerator
          java.sql.Ref
          java.sql.ResultSet
          java.sql.ResultSetMetaData
          java.sql.RowId
          java.sql.RowIdLifeTime
          java.sql.Savepoint
          java.sql.SQLData
          java.sql.SQLDataException
          java.sql.SQLException
          java.sql.SQLInput
          java.sql.SQLIntegrityConstraintViolationException
          java.sql.SQLInvalidAuthorizationSpecException
          java.sql.SQLNonTransientConnectionException
          java.sql.SQLNonTransientException
          java.sql.SQLOutput
          java.sql.SQLPermission
          java.sql.SQLSyntaxErrorException
          java.sql.SQLTimeoutException
          java.sql.SQLTransactionRollbackException
          java.sql.SQLTransientConnectionException
          java.sql.SQLTransientException
          java.sql.SQLXML
          java.sql.SQLWarning
          java.sql.Statement
          java.sql.Struct
          java.sql.Table
          java.sql.Time
          java.sql.Timestamp
          java.sql.Types
          java.sql.Update
          java.sql.Wrapper

          下列類和接口是新增的或經過修改的。新的類和接口用粗體標出。

          java.sql.AutoGeneratedKeys
          java.sql.BaseQuery
          java.sql.Blob
          java.sql.CallableStatement
          java.sql.ClientInfoException
          java.sql.Clob
          java.sql.Column
          java.sql.Connection
          java.sql.DatabaseMetaData
          java.sql.NClob
          java.sql.PreparedStatement
          java.sql.Query
          java.sql.QueryObjectFactory
          java.sql.QueryObjectGenerator
          java.sql.ResultSet
          java.sql.RowId
          java.sql.RowIdLifeTime
          java.sql.SQLDataException
          java.sql.SQLException
          java.sql.SQLIntegrityConstraintViolationException
          java.sql.SQLInvalidAuthorizationSpecException
          java.sql.SQLNonTransientConnectionException
          java.sql.SQLNonTransientException
          java.sql.SQLSyntaxErrorException
          java.sql.SQLTimeoutException
          java.sql.SQLTransactionRollbackException
          java.sql.SQLTransientConnectionException
          java.sql.SQLTransientException
          java.sql.SQLXML
          java.sql.SQLWarning
          java.sql.Statement
          java.sql.Table
          java.sql.Types
          java.sql.Update
          java.sql.Wrapper
          javax.sql.CommonDataSource
          javax.sql.StatementEvent
          javax.sql.StatementEventListener

          圖5-1顯示了java.sql包中關鍵類和接口之間的交互和關系,以及用于創建語句、設置參數、檢索結果的方法。
          r_java.sql.gif

          圖5-1 java.sql包中主要類和接口之間的關系

          5.2 javax.sql包

          java.sql包中的類和接口如下。類使用粗體;接口使用正常字體。

          javax.sql.CommonDataSource
          javax.sql.ConnectionEvent
          javax.sql.ConnectionEventListener
          javax.sql.ConnectionPoolDataSource
          javax.sql.DataSource
          javax.sql.PooledConnection
          javax.sql.RowSet
          javax.sql.RowSetEvent
          javax.sql.RowSetInternal
          javax.sql.RowSetListener
          javax.sql.RowSetMetaData
          javax.sql.RowSetReader
          javax.sql.RowSetWriter
          javax.sql.StatementEvent
          javax.sql.StatementEventListener
          javax.sql.XAConnection
          javax.sql.XADataSource


          注意 :javax.sql包中的類和接口最開始是作為JDBC 2.0可選包引入的。可選包獨立于java.sql包提供。 現在兩者都包含在J2SE 1.4中。

          圖5-2,圖5-3,圖5-4和圖5-5顯示了以下功能領域中關鍵類和接口之間的關系:DataSource對象,池化連接,分布式事務,行集。

          r_5_2.gif

          圖5-2 javax.sql.DataSource和java.sql.Connection之間的關系

          r_5_3.gif

          圖5-3 連接池化過程中涉及的關系

          o_5_4.gif

          圖5-4 分布式事務支持中涉及的關系

          r_5_5.gif

          圖5-5 行集涉及的關系

          -- Main.Andyluo - 6 Oct 2005

          posted @ 2005-10-06 18:40 羅明 閱讀(156) | 評論 (0)編輯 收藏
           
          使應用具有快速更換數據庫能力

          問題虛擬背景:
          A項目組要實現一個基于Sql Server的應用,但工作環境只安裝有MySql(公司對開源比較看好: )),而且客戶有可能會轉移到Oracle數據庫環境。要求應用具有數據庫移植能力和快速更換能力,使應用在工作環境調試成功后能迅速轉移到客戶的Sql Server環境,而且將來可以方便地轉向Oracle。

          Andy提出的可用方案:
          1、使用標準JDBC
          2、使用抽象類定義數據訪問單元
          3、定義具體數據源訪問單元繼承2中接口

          代碼示例:
          定義數據訪問單元抽象類,包含數據訪問邏輯

          public abstract class DataManager
          {
           
          protected static String conString = null;
           
          protected static String urlString = null;
           
          public DataType[ ] getData()
           
          {
             
          //fetch data using standard JDBC with conString and urlString
           }


           
          public void setData(DataType[ ] dataArray)
           
          {
             
          //store data using standard JDBC with conString and urlString
           }

          }

          定義具體數據源訪問單元

          public class HsqlDataManager extends DataManager
          {
           
          static
           
          {
            conString 
          = "org.hsqldb.jdbcDriver";
            urlString 
          = "jdbc:hsqldb:db/YourDatabaseName";
           }

          }


          public class OdbcBlogManager extends AbstractBlogManager
          {
           
          static
           
          {
            conString 
          = "sun.jdbc.odbc.JdbcOdbcDriver";
            urlString 
          = "jdbc:odbc:db/YourDatabaseName";
           }

          }


          在調用數據訪問層時,可以聲明一個DataManager的引用,然后在構造器中實例化為具體子類,如:

          public class Andy
          {
           
          private DataManager dataManager = null;
           
           
          public Andy
           
          {
            dataManager 
          = new HsqlDataManager();
            
          //或者在資源文件里填寫具體子類,然后在這里動態加載并實例化
           }
           

           
          public void doSomething()
           
          {
            dataManager.getData();
            
           }

          }


          以后要遷移到另一個數據庫(有JDBC驅動),只需定義具體子類繼承DataManager(如HsqlDataManager),然后修改資源文件中的DataManager名稱(或者將new的類名改一下),不需要修改代碼。

          這興許可以解釋另一個問題:不贊成使用存儲過程,而應將SQL語句嵌在代碼中(適用于Java;微軟注定.Net不會有平臺移植性,數據庫大都用Sql Server,所以寫存儲過程還是比較好的)。

          (我在我的一個Eclipse RCP項目里使用了這種模式,從Sql server 2000到Hsql,特別方便,看起來感覺也比較好)

          歡迎大家拍轉,^_^

          posted @ 2005-10-06 15:49 羅明 閱讀(1039) | 評論 (2)編輯 收藏
           
          在Eclipse Plugin中執行任務

          Job代表一個異步操作。
          要執行的操作寫在run方法里。

          //定義一個Job
          class AJob extends Job
          {
           
          public AJob()
           
          {
            
          super("Andy's Job");
           }


           
          public IStatus run(IProgressMonitor monitor)
           
          {
            System.out.println(
          "This is Andy's Job");
            
          return Status.OK_STATUS;
           }

          }



          schedule后,任務在平臺線程等待隊列中排隊,等待調度執行。
          調用方式1:

          //異步調用
          AJob job = new AJob();
          job.schedule(); 
          //喚起平臺線程來調度這個Job

          調用方式2:

          //結束后再運行
          AJob job = new AJob();
          job.schedule();
           
          // do some other things.
          job.join();        //block,直到job完成或調用線程被中斷
          if(job.getResult().isOk())
          {
           
          //Job completed with success.
          }

          else
          {
           
          //Job did not complete successfully.
          }


          取消一個Job:
          if(!job.cancel())
          {
           job.join();
          }
           //cancel可能不會立即成功,我們用join等待cancel操作完成。
          posted @ 2005-10-06 15:26 羅明 閱讀(939) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第七章 - 數據庫元數據(關鍵類、獲取信息、查看特性、查看限制、事務支持、新增方法、方法更新) - 譯文

          數據庫元數據

          第7章 數據庫元數據

          JDBC驅動通過實現DatabaseMetaData接口來提供底層數據源的信息。DatabaseMetaData接口主要被應用服務器和工具使用,以此決定怎樣跟給定數據源交互。普通應用也可以通過DatabaseMetaData的方法得到數據源的信息,但這不常用。

          DatabaseMetaData?接口有超過150個方法,根據提供的信息可以分為以下幾類:

          DatabaseMetaData?接口還有超過40個字段,這些字段用于DatabaseMetaData中各種方法的常量返回值。

          這一章粗略介紹一下DatabaseMetaData接口,通過舉例子對元數據方法進行分類,同時介紹一些新的方法。詳細介紹請參考JDBC 4.0 類庫規范

          JDBC中的ResultSetMetaData接口將在第15章“結果集”介紹。

          7.1 創建DatabaseMetaData對象

          DatabaseMetaData?對象由Connection的getMetaData方法創建,然后我們可以利用它來動態獲取底層數據源的信息。代碼示例 7-1 創建了一個DatabaseMetaData對象,并用它來查看表名允許的最大字符數。

          // con是一個Connection對象
          DatabaseMetaData dbmd = con.getMetadata();
          int maxLen = dbmd.getMaxTableNameLength();
          

          代碼示例 7-1 創建和使用DatabaseMetaData對象

          7.2 獲取一般信息

          DatabaseMetaData?中有一類方法用于獲取底層數據源的一般信息,或者它的一些實現細節。這類方法有:

          7.3 查看支持的特性

          大量DatabaseMetaData方法可以用來判斷驅動或底層數據源是否支持某個特性或特性集。還有一些方法可以告知提供支持的級別。

          判斷是否支持某個特性的方法如下:

          查看特性支持級別的方法:

          7.4 數據源限制

          另一組方法提供數據源對操作的限制信息,如下:

          方法返回一個整型的限制數。0表示沒有限制或未知限制。

          7.5 SQL對象及其屬性

          DatabaseMetaData?中有一組方法提供組成數據源之SQL對象的信息。這組方法也包含獲取SQL對象屬性的方法。方法的返回值是一個ResultSet,ResultSet的每一行代表一個特定對象。例如,getUDTs方法返回的ResultSet里每一行都是數據源里定義的一個UDT(user-defined type)。這類方法主要有:

          7.6 事務支持

          一小部分方法提供數據源所支持事務的語義信息。這類方法主要有:

          7.7 新增方法

          JDBC 4.0 類庫在DatabaseMetaData中引入了下列新方法:

          這些方法的完整定義見JDBC 4.0 類庫規范(javadoc)。

          7.8 經過修改的方法

          JDBC 4.0 類庫修改了DatabaseMetaData中下列方法的定義: (原文:Clarified to indicate that if the database supports SQL distinct types, then getTypeInfo() will return a single row with a TYPE_NAME of DISTINCT and a DATA_TYPE of Types.DISTINCT. If the database supports SQL structured types, then getTypeInfo() will return a single row with a TYPE_NAME of STRUCT and a DATA_TYPE of Types.STRUCT. Support has also been added for the new data types SQLXML and ROWID.)

          (原文:Clarified that the method retrieves a description of the foreign key columns in the given foreign key table that reference the primary key or the unique constraint columns of the parent table (could be the same or a different table). The number of columns returned from the parent table must match the number of columns that make up the foreign key. They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ.)

          (Clarified that the return value for COLUMN_DEF that the default value for the column, should be interpreted as a string when the value is enclosed in quotes.)

          JDBC 4.0 類庫規范中有這些方法更新后的定義。

          翻譯進度請參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4說明書

          posted @ 2005-10-06 13:45 羅明 閱讀(3199) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第六章 - 兼容性(定義、指導原則、JDBC 1.0、2.0、3.0、4.0、決定級別、不贊成使用的API) - 譯文

          兼容性

          第6章 兼容性

          這一章描述了JDBC類庫實現在各個兼容級別要支持的特性。一個JDBC類庫實現包含了一個JDBC驅動和底層數據源。兼容性定義了在驅動層之上要實現的特性。

          任何沒有提到的特性都是可選的。通常,如果底層數據源不支持,驅動不需要實現這個特性。

          6.1 定義

          為了避免混淆,我們將在兼容性的討論中使用以下術語:

          6.2 指導原則和要求

          下列指導原則適合所有級別的兼容性:


          入門級別SQL92(Entry Level SQL92)是JDBC類庫實現要支持的最低SQL級別。對SQL99或SQL2003中特性的訪問應該與SQL99或SQL2003規范的相關部分一致。


          注意 :JDBC類庫實現要支持“SQL92 - 過渡級別”中定義的DROP TABLE命令,但對CASCADE和RESTRICT選項的支持 是可選的。而且,當要被刪除的表有視圖(views)和完整性約束時,DROP TABLE的行為也是實現類庫的廠商自己定義的。

          6.3 JDBC 1.0 類庫兼容性

          與JDBC 1.0 類庫兼容的驅動應滿足以下條件:

          6.4 JDBC 2.0 類庫兼容性

          與JDBC 2.0 類庫兼容的驅動應滿足以下條件:

          6.5 JDBC 3.0 類庫的兼容性

          與JDBC 3.0 類庫兼容的驅動應滿足以下條件:

          6.6 JDBC 4.0 類庫的兼容性

          與JDBC 4.0 類庫兼容的驅動應滿足以下條件:


          注意 :這一段將在下一版草案更新

          6.7 決定兼容級別

          JDBC 類庫是Java平臺不可或缺的一部分。與JDBC類庫規范兼容是與整個平臺兼容的一個子集。


          注意 :在編寫這個文檔之際,還沒有獨立于平臺檢查JDBC類庫兼容級別的。

          6.8 不贊成使用的類庫

          不贊成使用是針對類、接口、構造器、方法或字段來說的,即不再被推薦使用,而且可能在將來某個版本不復存在。

          JDBC 2.0類庫中不贊成使用的構造器和方法: java.sql.CallableStatement.getBigDecimal(int, int)

          java.sql.Date(int, int, int)
          java.sql.Date.getHours()
          java.sql.Date.getMinutes()
          java.sql.Date.getSeconds()
          java.sql.Date.setHours(int)
          java.sql.Date.setMinutes(int)
          java.sql.Date.setSeconds(int)

          java.sql.DriverManager.getLogStream()
          java.sql.DriverManager.setLogStream(PrintStream?)

          java.sql.PreparedStatement.setUnicodeStream(int, InputStream?, int)

          java.sql.ResultSet.getBigDecimal(int, int)
          java.sql.ResultSet.getBigDecimal(String, int)
          java.sql.ResultSet.getUnicodeStream(int)
          java.sql.ResultSet.getUnicodeStream(String)

          java.sql.Time(int, int, int)
          java.sql.Time.getDate()
          java.sql.Time.getDay()
          java.sql.Time.getMonth()
          java.sql.Time.getYear()
          java.sql.Time.setDate(int)
          java.sql.Time.setMonth(int)
          java.sql.Time.setYear(int)

          java.sql.Timestamp(int, int, int, int, int, int, int)

          也可參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/兼容性  

          posted @ 2005-10-06 11:17 羅明 閱讀(2389) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第五章 - 類和接口(java.sql包、javax.sql包) - 譯文

          類和接口

          第五章 類和接口

          以下類和接口組成了JDBC類庫

          5.1 java.sql包

          JDBC核心類庫包含在java.sql包中。java.sql包中的注釋(annotations)、枚舉、類和接口如下。注釋、枚舉和類使用粗體;接口使用正常字體。

          java.sql.AutoGeneratedKeys
          java.sql.Array
          java.sql.BaseQuery
          java.sql.BatchUpdateException
          java.sql.Blob
          java.sql.CallableStatement
          java.sql.ClientInfoException
          java.sql.Column
          java.sql.Clob
          java.sql.Connection
          java.sql.DataSet
          java.sql.DataTruncation
          java.sql.DatabaseMetaData
          java.sql.Date
          java.sql.Driver
          java.sql.DriverManager
          java.sql.DriverPropertyInfo
          java.sql.NClob
          java.sql.ParameterMetaData
          java.sql.PreparedStatement
          java.sql.Query
          java.sql.QueryObjectFactory
          java.sql.QueryObjectGenerator
          java.sql.Ref
          java.sql.ResultSet
          java.sql.ResultSetMetaData
          java.sql.RowId
          java.sql.RowIdLifeTime
          java.sql.Savepoint
          java.sql.SQLData
          java.sql.SQLDataException
          java.sql.SQLException
          java.sql.SQLInput
          java.sql.SQLIntegrityConstraintViolationException
          java.sql.SQLInvalidAuthorizationSpecException
          java.sql.SQLNonTransientConnectionException
          java.sql.SQLNonTransientException
          java.sql.SQLOutput
          java.sql.SQLPermission
          java.sql.SQLSyntaxErrorException
          java.sql.SQLTimeoutException
          java.sql.SQLTransactionRollbackException
          java.sql.SQLTransientConnectionException
          java.sql.SQLTransientException
          java.sql.SQLXML
          java.sql.SQLWarning
          java.sql.Statement
          java.sql.Struct
          java.sql.Table
          java.sql.Time
          java.sql.Timestamp
          java.sql.Types
          java.sql.Update
          java.sql.Wrapper

          下列類和接口是新增的或經過修改的。新的類和接口用粗體標出。

          java.sql.AutoGeneratedKeys
          java.sql.BaseQuery
          java.sql.Blob
          java.sql.CallableStatement
          java.sql.ClientInfoException
          java.sql.Clob
          java.sql.Column
          java.sql.Connection
          java.sql.DatabaseMetaData
          java.sql.NClob
          java.sql.PreparedStatement
          java.sql.Query
          java.sql.QueryObjectFactory
          java.sql.QueryObjectGenerator
          java.sql.ResultSet
          java.sql.RowId
          java.sql.RowIdLifeTime
          java.sql.SQLDataException
          java.sql.SQLException
          java.sql.SQLIntegrityConstraintViolationException
          java.sql.SQLInvalidAuthorizationSpecException
          java.sql.SQLNonTransientConnectionException
          java.sql.SQLNonTransientException
          java.sql.SQLSyntaxErrorException
          java.sql.SQLTimeoutException
          java.sql.SQLTransactionRollbackException
          java.sql.SQLTransientConnectionException
          java.sql.SQLTransientException
          java.sql.SQLXML
          java.sql.SQLWarning
          java.sql.Statement
          java.sql.Table
          java.sql.Types
          java.sql.Update
          java.sql.Wrapper
          javax.sql.CommonDataSource
          javax.sql.StatementEvent
          javax.sql.StatementEventListener

          圖5-1顯示了java.sql包中關鍵類和接口之間的交互和關系,以及用于創建語句、設置參數、檢索結果的方法。
          r_java.sql.gif

          圖5-1 java.sql包中主要類和接口之間的關系

          5.2 javax.sql包

          java.sql包中的類和接口如下。類使用粗體;接口使用正常字體。

          javax.sql.CommonDataSource
          javax.sql.ConnectionEvent
          javax.sql.ConnectionEventListener
          javax.sql.ConnectionPoolDataSource
          javax.sql.DataSource
          javax.sql.PooledConnection
          javax.sql.RowSet
          javax.sql.RowSetEvent
          javax.sql.RowSetInternal
          javax.sql.RowSetListener
          javax.sql.RowSetMetaData
          javax.sql.RowSetReader
          javax.sql.RowSetWriter
          javax.sql.StatementEvent
          javax.sql.StatementEventListener
          javax.sql.XAConnection
          javax.sql.XADataSource


          注意 :javax.sql包中的類和接口最開始是作為JDBC 2.0可選包引入的??蛇x包獨立于java.sql包提供。 現在兩者都包含在J2SE 1.4中。

          圖5-2,圖5-3,圖5-4和圖5-5顯示了以下功能領域中關鍵類和接口之間的關系:DataSource對象,池化連接,分布式事務,行集。

          r_5_2.gif

          圖5-2 javax.sql.DataSource和java.sql.Connection之間的關系

          r_5_3.gif

          圖5-3 連接池化過程中涉及的關系

          o_5_4.gif

          圖5-4 分布式事務支持中涉及的關系

          r_5_5.gif

          圖5-5 行集涉及的關系

          -- Main.Andyluo - 6 Oct 2005

          也可參照http://www.pgsqldb.org/twiki/bin/view/PgSQL/類和接口

          posted @ 2005-10-06 10:37 羅明 閱讀(3975) | 評論 (1)編輯 收藏
           
          JDBC 4.0 規范 - 第四章 - 概述(建立連接、執行SQL、模型比較、JDBC in J2EE)(續) - 譯文

          ==========================================================

          概述

          JDBC類庫使得Java程序可以訪問多個數據源,但在大多數情況下,這個數據源是關系數據庫,并且通過SQL訪問。然而,實現JDBC技術的驅動也可以基于其它的數據源,包括遺留文件系統和面向對象的系統。JDBC類庫的一個主要目的就是提供一個應用程序訪問多種數據源的標準接口。

          這一章介紹JDBC類庫的一些關鍵概念,并描述JDBC應用的兩個通用環境及其中的功能實現。兩層和三層模型都是能被實現在多個物理配置上的邏輯模型。

          =================================================

          4.1 創建連接

          JDBC類庫中的Connection接口代表了底層數據源的一個連接。

          在典型場景中,JDBC應用程序使用兩種機制連接到數據源:

          1.DriverManager --- 這個類在JDBC 1.0中引入,它使用硬編碼的URL來加載驅動。

          2.DataSource --- 這個接口在JDBC 2.0可選包中引入。它優于DriverManager方式,因為它隱藏了數據源的詳細信息。我們通過設置DataSource的屬性來標明它代表的數據源。當getConnection方法被調用時,DataSource對象會返回一個對應的連接。我們可以通過改變DataSource的屬性來使它指向另一個數據源,而不是改變程序代碼。而且,即使DataSource的實現改變了,使用它的應用程序代碼也不需要改變。

          JDBC類庫定義了兩個DataSource的擴展來支持企業級應用,如下:

          1.ConnectionPoolDataSource --- 支持物理連接的緩存和重用,這樣可以提高應用的性能和可伸縮性。

          2.XADataSource --- 提供可以使用在分布式事務中的連接。

          =========================================================

          4.2 執行SQL語句和操縱結果

          連接建立后,我們可以使用JDBC類庫對目標數據源進行查詢和更新。JDBC類庫提供了對大多數SQL2003通用特性的支持。由于各個廠商可能要支持不同的特性,JDBC類庫提供了一個DatabaseMetadata接口。應用可以通過這個接口了解數據源是否支持某個特性。JDBC類庫也定義了轉義語義來支持特定廠商非標準的特性。轉義語義使得我們可以訪問與本地程序相同的SQL特性集,同時保持應用的可移植性。

          應用通過使用Connection接口來設置事務屬性和創建Statement, PreparedStatementCallableStatement. 這些statement被用來執行SQL語句和檢索結果。ResultSet接口封裝了SQL查詢的結果。語句也可以批處理,這樣應用可以通過一次單元執行提交對數據源的多次更新。

          RowSet接口擴展了ResultSet接口。它提供了一個比標準結果集功能更多的表數據容器。RowSet對象是Java Beans組件,它可以在中斷數據庫連接的情況下操縱數據。例如,一個RowSet實現可以被序列化從而傳送到網絡上,這對于吞吐量小的客戶端尤為有用,因為這可以省去加載JDBC驅動和建立JDBC連接的開銷。RowSet還可以使用定制的閱讀器(Reader)來訪問表格數據(不僅僅是關系數據庫的數據)。甚者,RowSet對象可以在中斷數據庫連接的情況下更新數據,并在連接正常時通過一個定制的書寫器(Writer)將更新寫入數據源。

          4.2.1 SQL高級數據類型的支持

          JDBC類庫定義了SQL數據類型到JDBC數據類型的標準映射。映射也包含了對SQL2003高級數據類型如BLOB,CLOB,ARRAY,REFSTRUCTDISTINCT的支持。JDBC驅動也可以實現多個用戶自定義類型(UDTs,user-defined types)的映射,在這里,每個UDT映射到Java中的一個類。

          JDBC類庫也提供對外部數據的支持,例如數據源外部的一個文件。

          ========================================

          4.3 兩層模型

          兩層模型將功能分配到客戶端和服務器端,如圖4-1.

          twotier.gif

          FIGURE 4-1 兩層模型

          客戶端包含了應用和一個或多個JDBC驅動,這些應用負責下列內容:

          * 表示邏輯

          * 業務邏輯

          * 對多語句事務(multiple-statement transactions)或分布式事務的管理

          * 資源管理

          在這個模型中,應用直接跟JDBC驅動打交道,包括建立和管理物理連接,以及處理底層數據源的相關細節。應用可以通過對數據源實現的了解來使用它的非標準特性或者提升性能。

          模型的缺點:

          * 將表示邏輯、業務邏輯和基礎設施、系統級別的功能混淆在一起,不利于維護。

          * 由于被綁定到特定的數據庫,應用很難被移植。需要連接到多個數據庫的應用要注意各個廠商實現的區別。

          * 缺少可伸縮性。典型地,應用將從始至終占有一個或多個物理連接,缺少對并發應用的支持。在這個模型中,性能、可伸縮性和可靠性問題都是由JDBC驅動和底層數據源處理的。如果應用要跟多個驅動打交道,它需要注意每個驅動/數據源對是怎么處理這些問題的。

          ======================================================

          4.4 三層模型

          三層模型引入了中間層服務器來管理業務邏輯和基礎結構,如圖4-2.

          threetier.gif

          FIGURE 4-2 三層模型

          這個架構為企業級應用提供了更好的性能、可伸縮性和可靠性。功能劃分如下:

          1.客戶端 --- 只負責表示邏輯,處理人機交互。Java應用程序、網頁瀏覽器和PDA等都是典型的客戶端。客戶端與中間層應用交互,它不需要了解底層的基礎結構和數據源實現。

          2.中間層服務器 --- 中間層包含:

          * 一些應用程序。這些應用負責跟客戶端打交道和實現業務邏輯。如果應用包含與數據源的交互,它應該使用高層抽象,例如DataSource對象和邏輯連接,而不是底層的驅動程序類庫。

          * 一個應用服務器。提供支持大部分應用的基礎結構。這可能包含管理和池化物理連接、管理事務和掩蓋不同JDBC驅動的細節。最后一點使得應用更容易被移植。應用服務器可以使用J2EE服務器。它應該直接和JDBC驅動交互和提供高層應用使用的功能抽象。

          * 一個或多個JDBC驅動。提供與底層數據源的連接,每個驅動使用底層數據源支持的特性來實現標準JDBC類庫。驅動層需要掩蓋SQL2003標準和底層數據源語言的不同。如果數據源不是一個關系型數據庫管理系統(DBMS),那么驅動要實現應用服務器使用的關系層。

          3.底層數據源 --- 存放數據的層。包含關系型數據庫管理系統(relational DBMS),遺留文件系統,面向對象的DBMS,數據倉庫,報表或者其他包裝和表示數據的方式,只要有對應的支持JDBC類庫的驅動。

          ===================================================

          4.5 J2EE平臺中的JDBC

          J2EE組件,例如JSPServletsEJB,經常需要利用JDBC類庫訪問關系型數據。當在J2EE組件里使用JDBC類庫時,容器可能幫你管理事務和數據源(譯者注:Container Managed Persistence,容器管理持久性)。這樣,J2EE組件開發者就不直接使用JDBC類庫的事務和數據源管理功能。詳情請見J2EE平臺規范。

          posted @ 2005-09-30 20:08 羅明 閱讀(162) | 評論 (0)編輯 收藏
           
          JDBC 4.0 規范 - 第四章 - 概述(建立連接、執行SQL、模型比較、JDBC in J2EE)(續) - 譯文

          =====================================================
          概述

          JDBC類庫使得Java程序可以訪問多個數據源,但在大多數情況下,這個數據源是關系數據庫,并且通過SQL訪問。然而,實現JDBC技術的驅動也可以基于其它的數據源,包括遺留文件系統和面向對象的系統。JDBC類庫的一個主要目的就是提供一個應用程序訪問多種數據源的標準接口。

          這一章介紹JDBC類庫的一些關鍵概念,并描述JDBC應用的兩個通用環境及其中的功能實現。兩層和三層模型都是能被實現在多個物理配置上的邏輯模型。

          =====================================================
          4.1 創建連接
          JDBC類庫中的Connection接口代表了底層數據源的一個連接。

          在典型場景中,JDBC應用程序使用兩種機制連接到數據源:
          1.DriverManager --- 這個類在JDBC 1.0中引入,它使用硬編碼的URL來加載驅動。
          2.DataSource --- 這個接口在JDBC 2.0可選包中引入。它優于DriverManager方式,因為它隱藏了數據源的詳細信息。我們通過設置DataSource的屬性來標明它代表的數據源。當getConnection方法被調用時,DataSource對象會返回一個對應的連接。我們可以通過改變DataSource的屬性來使它指向另一個數據源,而不是改變程序代碼。而且,即使DataSource的實現改變了,使用它的應用程序代碼也不需要改變。

          JDBC類庫定義了兩個DataSource的擴展來支持企業級應用,如下:
          1.ConnectionPoolDataSource --- 支持物理連接的緩存和重用,這樣可以提高應用的性能和可伸縮性。
          2.XADataSource --- 提供可以使用在分布式事務中的連接。

          ======================================================
          4.2 執行SQL語句和操縱結果
              連接建立后,我們可以使用JDBC類庫對目標數據源進行查詢和更新。JDBC類庫提供了對大多數SQL2003通用特性的支持。由于各個廠商可能要支持不同的特性,JDBC類庫提供了一個DatabaseMetadata接口。應用可以通過這個接口了解數據源是否支持某個特性。JDBC類庫也定義了轉義語義來支持特定廠商非標準的特性。轉義語義使得我們可以訪問與本地程序相同的SQL特性集,同時保持應用的可移植性。

              應用通過使用Connection接口來設置事務屬性和創建Statement,PreparedStatement和CallableStatement. 這些statement被用來執行SQL語句和檢索結果。ResultSet接口封裝了SQL查詢的結果。語句也可以批處理,這樣應用可以通過一次單元執行提交對數據源的多次更新。

              RowSet接口擴展了ResultSet接口。它提供了一個比標準結果集功能更多的表數據容器。RowSet對象是Java Beans組件,它可以在中斷數據庫連接的情況下操縱數據。例如,一個RowSet實現可以被序列化從而傳送到網絡上,這對于吞吐量小的客戶端尤為有用,因為這可以省去加載JDBC驅動和建立JDBC連接的開銷。RowSet還可以使用定制的閱讀器(Reader)來訪問表格數據(不僅僅是關系數據庫的數據)。甚者,RowSet對象可以在中斷數據庫連接的情況下更新數據,并在連接正常時通過一個定制的書寫器(Writer)將更新寫入數據源。

          4.2.1 對SQL高級數據類型的支持
              JDBC類庫定義了SQL數據類型到JDBC數據類型的標準映射。映射也包含了對SQL2003高級數據類型如BLOB,CLOB,ARRAY,REF,STRUCT和DISTINCT的支持。JDBC驅動也可以實現多個用戶自定義類型(UDTs,user-defined types)的映射,在這里,每個UDT映射到Java中的一個類。

          JDBC類庫也提供對外部數據的支持,例如數據源外部的一個文件。

          ========================================
          4.3 兩層模型
              兩層模型將功能分配到客戶端和服務器端,如圖4-1.
          twotier.gif
                         FIGURE 4-1 兩層模型
              客戶端包含了應用和一個或多個JDBC驅動,這些應用負責下列內容:
              * 表示邏輯
              * 業務邏輯
              * 對多語句事務(multiple-statement transactions)或分布式事務的管理
              * 資源管理

              在這個模型中,應用直接跟JDBC驅動打交道,包括建立和管理物理連接,以及處理底層數據源的相關細節。應用可以通過對數據源實現的了解來使用它的非標準特性或者提升性能。

              模型的缺點:
              * 將表示邏輯、業務邏輯和基礎設施、系統級別的功能混淆在一起,不利于維護。
              * 由于被綁定到特定的數據庫,應用很難被移植。需要連接到多個數據庫的應用要注意各個廠商實現的區別。
              * 缺少可伸縮性。典型地,應用將從始至終占有一個或多個物理連接,缺少對并發應用的支持。在這個模型中,性能、可伸縮性和可靠性問題都是由JDBC驅動和底層數據源處理的。如果應用要跟多個驅動打交道,它需要注意每個驅動/數據源對是怎么處理這些問題的。

          ======================================================
          4.4 三層模型
              三層模型引入了中間層服務器來管理業務邏輯和基礎結構,如圖4-2.
          threetier.gif
                                      FIGURE 4-2 三層模型
              這個架構為企業級應用提供了更好的性能、可伸縮性和可靠性。功能劃分如下:
              1.客戶端 --- 只負責表示邏輯,處理人機交互。Java應用程序、網頁瀏覽器和PDA等都是典型的客戶端。客戶端與中間層應用交互,它不需要了解底層的基礎結構和數據源實現。

              2.中間層服務器 --- 中間層包含:
                 * 一些應用程序。這些應用負責跟客戶端打交道和實現業務邏輯。如果應用包含與數據源的交互,它應該使用高層抽象,例如DataSource對象和邏輯連接,而不是底層的驅動程序類庫。
                 * 一個應用服務器。提供支持大部分應用的基礎結構。這可能包含管理和池化物理連接、管理事務和掩蓋不同JDBC驅動的細節。最后一點使得應用更容易被移植。應用服務器可以使用J2EE服務器。它應該直接和JDBC驅動交互和提供高層應用使用的功能抽象。
                 * 一個或多個JDBC驅動。提供與底層數據源的連接,每個驅動使用底層數據源支持的特性來實現標準JDBC類庫。驅動層需要掩蓋SQL2003標準和底層數據源語言的不同。如果數據源不是一個關系型數據庫管理系統(DBMS),那么驅動要實現應用服務器使用的關系層。

              3.底層數據源 --- 存放數據的層。包含關系型數據庫管理系統(relational DBMS),遺留文件系統,面向對象的DBMS,數據倉庫,報表或者其他包裝和表示數據的方式,只要有對應的支持JDBC類庫的驅動。

          ===================================================
          4.5 J2EE平臺中的JDBC
              J2EE組件,例如JSP,Servlets和EJB,經常需要利用JDBC類庫訪問關系型數據。當在J2EE組件里使用JDBC類庫時,容器可能幫你管理事務和數據源(譯者注:Container Managed Persistence,容器管理持久性)。這樣,J2EE組件開發者就不直接使用JDBC類庫的事務和數據源管理功能。詳情請見J2EE平臺規范。

          posted @ 2005-09-30 13:22 羅明 閱讀(1517) | 評論 (1)編輯 收藏
           
          多謝ZHENGJY的提醒,爭取加入Postgre中文小組ing
          能夠繼續翻譯下去,又不會重復別人的工作了。
          posted @ 2005-09-28 19:20 羅明 閱讀(125) | 評論 (0)編輯 收藏
           
          多謝ZHENGJY的提醒,爭取加入Postgre中文小組ing
          能夠繼續翻譯下去,又不會重復別人的工作了。
          posted @ 2005-09-28 11:22 羅明 閱讀(421) | 評論 (0)編輯 收藏
           
          JDBC 4.0 Specification - 序言、介紹、目標、新特性摘要、概述 ( 譯文 )

          其它章節的翻譯參見:

          http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6

          =================================================================

          序言

          這個文檔鞏固了下面幾個規范的內容:

          JDBC: JavaSQL類庫”

          JDBC 2.1 類庫”

          JDBC 2.0 標準擴展類庫”

          JDBC 3.0 規范”

          文檔介紹了JDBC 4.0 類庫的新特征和一些增強的特征。文檔根據不同特征劃分章節,這樣可以更方便了解JDBC 4.03.0的不同之處。

          讀者如果想了解JDBC類庫的詳細信息,可以參考JDBC的類庫文檔(Javadoc),該文檔可以由以下鏈接獲得:

          http://java.sun.com/products/jdbc

          ==========================================================================

          介紹

          1.1 JDBC類庫

          JDBC類庫提供了通過Java語言訪問關系數據庫的能力。Java程序通過JDBC可以執行SQL語句,對獲取的數據進行處理,并將變化了的數據存回數據庫。在分布式異構環境中,我們還可以通過JDBC操縱多個數據源。

          JDBC類庫基于X/Open SQL通用語言接口(CLI),ODBC也基于此。JDBC提供了一個使用方便的映射方案:從Java語言到X/Open 通用語言接口和SQL標準的抽象實體及概念的映射。

          1997年的產生至今,JDBC類庫已被廣泛的接受和實現。類庫的靈活性使得它可以有很多個具體實現。

          1.2 平臺

          JDBC類庫是Java平臺的一部分。4.0版分為兩個包:java.sql javax.sql。這兩個包都包含在JSE(Java桌面版)JEE(Java企業版)中。

          1.3 適合讀者

          該文檔主要面向下列產品的開發者:

          1. JDBC驅動程序

          2. 基于數據庫驅動提供三層架構服務的應用服務器

          3. 使用JDBC類庫來提供服務的工具

          該文檔想達到以下目的:

          1.對使用JDBC類庫的開發者的一個介紹

          2.作為開發基于JDBC的類庫的起始點

          ===============================================================

          目標

          2.1 歷史

          2.2 JDBC 4.0 之目標

          ---1.JEEJSE平臺相處融洽

          ---2.SQL:2003一致

          ---3.鞏固前述四個規范

          ---4.提供中立于廠商的通用功能

          ---5.主要只針對SQL類型的數據源

          ---6.提供高層類庫和工具的基礎設施

          ---7.保持簡單

          ---8.加強可靠性、可用性和可伸縮性

          ---9.保持向后兼容性

          ---10.JDBC行集(RowSet)緊密聯系

          ---11.與連接器架構(Connectors)兼容

          ---12.清晰描述JDBC需求

          ==================================================================

          新特性概覽

          3.1 變更概覽

          JDBC 4.0 類庫在以下領域注入了變化和新的元素:

          1.自動加載java.sql.Driver

          DriverManager.getConnection方法被修改以利用JSE的服務提供者機制來自動加載JDBC驅動。這樣就不需要調用Class.forName方法了。

          2.類庫使用更容易

          添加了標準JDBC注釋。支持數據集(DataSet),使Java應用調用SQL數據源更加方便。

          3.ROWID數據類型

          添加了java.sql.RowID數據類型,使得JDBC程序可以訪問SQL ROWID。

          4.支持本地字符集轉換(National Character Set Conversion)

          添加了一些JDBC類型:NCHAR, NVARCHAR, LONGVARCHAR, NCLOB。對應的方法setNString, setNCharacterStream, setNClob也被添加到PreparedStatement接口中。

          5.增強了對BLOBCLOB的支持

          Connection接口添加了生產BLOB,CLOBNCLOB對象的方法。PreparedStatement接口添加了通過InputStream插入BLOB的方法和使用Reader插入CLOB,NCLOB的方法。Blob, ClobNClob現在可以通過free方法釋放資源。

          6.SQL/XMLXML支持

          SQL2003引入了用SQL表達XML數據的概念。一些類庫被添加進來以支持應用對這些數據的訪問。

          7.包裝器(Wrapper)模式

          添加了解包JDBC實現的能力,使開發者可以利用在廠商實現中提供的非標準JDBC方法。

          8.加強的SQLException

          添加對JSE鏈式異常的支持。SQLException現在支持Iterable接口,所以我們可以在for-each循環里讀取SQLExceptions。新添加了兩類SQL異常:SQLTransientExceptionSQLNonTransientException。每個類都提供映射到普通SQLState類型值(譯者注:SQLState)的子類。

          9.連接管理

          ConnectionStatement接口得到了增強,以利于對連接狀態的跟蹤,并增加在池環境中管理Statement對象的靈活性。

          10.JDBC類庫的變化

          下面的JDBC接口被修改:

          ---10.1 Connection

          添加了下列方法:createBlob, createClob, createNClob, createQueryObject, isValid, createXML, getClientInfo, setClientInfo。

          ---10.2 CallableStatement

          添加了下列方法:getRowId, setRowId, getNClob, setNString, setNCharacterStream, setNClob, getSQLXML, setSQLXML。重載了setClobsetBlob方法。

          ---10.3 DatabaseMetaData

          添加了下列方法:getRowIdLifetime, autoCommitFailureClosesAllResultSets, providesQueryObjectGenerator, getClientInfoProperties, supportsStoredFunctionsUsingCallSyntax. 重載了getSchemas方法。

          ---10.4 PreparedStatement

          添加了下列方法:setRowId, setNString, setNCharacterStream, setSQLXML, isPoolable, setPoolable, setNClob。重載了setClobsetBlob方法。

          ---10.5 ResultSet

          添加了下列方法:getHoldability, getRowId, updateRowID, getNClob, isClosed, updateNString, getSQLXML, updateSQLXML, updateNClob。

          ---10.6 Statement

          添加了isClosedgetResultSetHoldability方法。

          ---10.7 DataSource

          添加了createQueryObject方法。

          ---10.8 PooledConnection

          添加了addStatementEventListenerremoveStatementEventListener方法。

          ====================================================================

          概覽

          JDBC類庫使得Java程序可以訪問多個數據源,但在大多數情況下,這個數據源是關系數據庫,并且通過SQL訪問。然而,實現JDBC技術的驅動也可以基于其它的數據源,包括遺留文件系統和面向對象的系統。

          JDBC類庫的主要目的就是提供應用程序訪問多種數據源的標準接口。

          這一章介紹JDBC類庫的一些關鍵概念,并描述JDBC應用的兩個通用環境及其中的功能實現。

          4.1 創建連接

          JDBC類庫中的Connection接口代表了底層數據源的一個連接。

          在典型場景中,JDBC應用程序使用兩種機制連接到數據源:

          1.DriverManager --- 這個類在JDBC 1.0中引入,它使用硬編碼的URL來加載驅動。

          2.DataSource --- 這個接口在JDBC 2.0可選包中引入。它優于DriverManager方式,因為它隱藏了數據源的詳細信息。我們通過設置DataSource的屬性來標明它代表的數據源。當getConnection方法被調用時,DataSource對象會返回一個對應的連接。我們可以通過改變DataSource的屬性來使它指向另一個數據源,而不是改變程序代碼。而且,如果DataSource的實現改變了,使用它的應用程序代碼不需要改變。

          JDBC類庫也定義了兩個DataSource的擴展,用來支持企業級應用,如下:

          1.ConnectionPoolDataSource --- 支持物理連接的緩存和重用,這樣可以提高應用的性能和可伸縮性。

          2.XADataSource --- 提供可以使用在分布式事務中的連接。

          posted @ 2005-09-28 01:18 羅明 閱讀(139) | 評論 (0)編輯 收藏
           
          ft, 今天發現JDBC 4.0已經有PostgreSQL在翻譯了
          第一天找了很久都沒找到,確定了才開始翻譯的,結果今天又發現了,已經有若干高手在翻譯了,http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6
          我就不能再插手了,但英文版我還是要看完的,長長知識,ft~
          posted @ 2005-09-27 23:57 羅明 閱讀(116) | 評論 (0)編輯 收藏
          僅列出標題
          共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
           
          主站蜘蛛池模板: 哈尔滨市| 贵阳市| 吐鲁番市| 固原市| 洛宁县| 闸北区| 花莲县| 万源市| 东平县| 色达县| 临武县| 安新县| 山西省| 旌德县| 深水埗区| 东山县| 吉首市| 汉阴县| 蒲城县| 宝坻区| 白山市| 东山县| 扎鲁特旗| 滨海县| 库伦旗| 东城区| 浮山县| 阿拉尔市| 苗栗市| 荔波县| 佛冈县| 兴城市| 宜兰县| 泸州市| 北安市| 修文县| 宁晋县| 梅州市| 陕西省| 嘉定区| 长葛市|