Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

JDBC ドライバのサポート

InterSystems IRIS® JDBC ドライバは、JDBC 4.2 標準に完全に準拠したタイプ 4 の実装です。ここでは、JDBC 4.2 API のすべてのクラスとインタフェースをリストして、それぞれのサポート・レベルを示し、インターシステムズ固有の機能すべてについて説明します。以下の項目について説明します。

"Connecting Your Application to InterSystems IRISOpens in a new tab" には、サンプル・コードを含め、JDBC を使用して Java アプリケーションから InterSystems IRIS サーバに接続する手順が示されています。

JDBC と InterSystems JDBC ドライバ

Java JDBC API は、ベンダに依存しないデータベース接続の業界標準です。これは、Java アプリケーションが、サポートされているプラットフォーム上のデータ・ソースに接続したり、それらのデータ・ソースに対して SQL を使用して操作を実行したりするための信頼性の高い方法を提供します。

InterSystems JDBC は、可能な限り最高のパフォーマンスを実現できるように、タイプ 4 のドライバに実装されています。タイプ 4 とは、データベースに直接アクセスできる純正 Java ドライバであり、クライアント JVM 内にインストールされ、外部ソフトウェアのサポートを必要としないことを意味します。これは、JDBC 4.2 API の仕様に完全に準拠しています。また、必要なインタフェースをすべてサポートし、JDBC 4.2 のすべてのガイドラインおよび要件に従っています。InterSystems IRIS は、SQL の例外処理の強化、各国語文字セット変換、および XML データ型以外のすべての機能をサポートしています。

API の機能および使用法の詳細は、"InterSystems ソフトウェアでの Java の使用法" を参照してください。そのドキュメントでは、JDBC ドライバによって有効になるすべての InterSystems IRIS Java テクノロジの概要も示しています (“InterSystems Java 接続オプション” を参照してください)。

インストールと構成

InterSystems JDBC ドライバは、標準の InterSystems IRIS インストール・パッケージに含まれています。追加のインストールや設定の手順は不要です。クライアントの要件および使用法については、"InterSystems ソフトウェアでの Java の使用法" の “クライアントとサーバ間の構成” を参照してください。

JDBC ドライバを使用して InterSystems IRIS とアプリケーション間の接続を作成する方法の詳細は、"Connecting Your Application to InterSystems IRISOpens in a new tab" を参照してください。

InterSystems IRIS がインストールされていないシステムで JDBC ドライバを使用する場合は、GitHub の InterSystems IRIS ドライバのページOpens in a new tabからドライバ・パッケージをダウンロードできます。

JDBC ドライバの準拠

ここでは、各 JDBC インタフェースのサポート・レベルに関する情報を提供します。

必須の java.sql インタフェース

以下のインタフェースは実装する必要があります。クラスによっては、データベースでサポートされない機能に実装が依存する場合はオプションになるメソッドが含まれているものがあります。標準の実装という注釈は、クラスの一般的な実装が変更なしに使用されていることを示します。

オプションの java.sql インタフェース

オプションの java.sql インタフェースをすべて以下に示します。イタリック体になっている項目は実装されません。

  • java.sql.Array

  • java.sql.Blob — すべてのメソッドが完全にサポートされます。

  • java.sql.Clob — すべてのメソッドが完全にサポートされます。

  • java.sql.NClob — すべてのメソッドが完全にサポートされます。

  • java.sql.Ref

  • java.sql.RowId — すべてのメソッドが完全にサポートされます。

  • java.sql.Savepoint — すべてのメソッドが完全にサポートされます。

  • java.sql.SQLData

  • java.sql.SQLInput

  • java.sql.SQLOutput

  • java.sql.SQLXML

  • java.sql.Struct

java.sql の例外

InterSystems JDBC ドライバは、以下の例外のみをスローします。

  • java.sql.BatchUpdateException

  • java.sql.SQLException

  • java.sql.SQLWarning

以下の例外は、完全を期すためにここにリストしていますが、必要ではなく、使用することはありません。

  • DataTruncation

  • SQLClientInfoException

  • SQLDataException

  • SQLFeatureNotSupportedException

  • SQLIntegrityConstraintViolationException

  • SQLInvalidAuthorizationSpecException

  • SQLNonTransientConnectionException

  • SQLNonTransientException

  • SQLRecoverableException

  • SQLSyntaxErrorException

  • SQLTimeoutException

  • SQLTransactionRollbackException

  • SQLTransientConnectionException

  • SQLTransientException

必須の javax.sql インタフェース

以下の必須インタフェースがサポートされています。標準の実装という注釈は、クラスの一般的な実装が変更なしに使用されていることを示します。

  • javax.sql.ConnectionEvent標準の実装

  • javax.sql.DataSource — 拡張機能や追加メソッドと共に実装されます (詳細は “DataSource の拡張メソッドと拡張機能” を参照)。

  • javax.sql.RowSetEvent標準の実装

  • javax.sql.StatementEvent標準の実装

オプションの javax.sql インタフェース

オプションの javax.sql インタフェースをすべて以下に示します。イタリック体になっている項目は実装されません。

  • javax.sql.CommonDataSource — 実装されません。代わりに javax.sql.DataSource を使用してください (関連情報は、“DataSource の拡張メソッドと拡張機能” を参照)。

  • javax.sql.ConnectionEventListener — すべてのメソッドが完全にサポートされます。

  • javax.sql.ConnectionPoolDataSource — バリアントや追加メソッドと共に実装されます (詳細は “ConnectionPoolDataSource の拡張メソッドと拡張機能” を参照)。

  • javax.sql.PooledConnection — すべてのメソッドが完全にサポートされます。

  • javax.sql.Rowset

  • javax.sql.RowSetInternal

  • javax.sql.RowSetListener

  • javax.sql.RowSetMetaData

  • javax.sql.RowSetReader

  • javax.sql.RowSetWriter

  • javax.sql.StatementEventListener

  • javax.sql.XAConnection

  • javax.sql.XADataSource

バリアントおよびサポートされないオプションのメソッド

以下のインタフェースは、InterSystems JDBC ドライバがサポートしないオプションのメソッドまたは標準以外の方法で実装されているメソッドを含みます。

CallableStatement : サポートされないメソッド

サポートされないオプションのメソッド

java.sql.CallableStatement は、以下のオプションのメソッドをサポートしません。

  • getArray()

    Array getArray(int i)
    Array getArray(String parameterName)
    
    
  • getObject()

    Object getObject(int i, java.util.Map map)
    Object getObject(String parameterName, java.util.Map map)
    
  • getRef()

    Ref getRef(int i)
    Ref getRef(String parameterName)
    
  • getRowId() および setRowId()

    java.sql.RowId getRowId(int i)
    java.sql.RowId getRowId(String parameterName)
    
    void setRowId(String parameterName, java.sql.RowId x)
    
  • getURL() および setURL()

    java.net.URL getURL(int i)
    java.net.URL getURL(String parameterName)
    
    void setURL(String parameterName, java.net.URL val)
    
  • getSQLXML() および setSQLXML()

    java.sql.SQLXML getSQLXML(int parameterIndex)
    java.sql.SQLXML getSQLXML(String parameterName)
    
    void setSQLXML(String parameterName, java.sql.SQLXML xmlObject)
    
Note:

java.sql.CallableStatement クラスはインターシステムズの拡張メソッドも 1 つサポートしますが、これについては別の場所で説明しています (“CallableStatement getBinaryStream() 拡張メソッド” を参照)。

Connection : サポートされないまたは制限のあるメソッド

サポートされないオプションのメソッド

java.sql.Connection は、以下のオプションのメソッドをサポートしません。

  • abort()

    void abort(Executor executor)
    
  • createArrayOf()

    java.sql.Array createArrayOf(String typeName, Object[] elements)
    
  • createBlob()

    Blob createBlob()
    
  • createClob()

    Clob createClob()
    
  • createNClob()

    java.sql.NClob createNClob()
    
  • createSQLXML()

    java.sql.SQLXML createSQLXML()
    
  • createStruct()

    java.sql.Struct createStruct(String typeName, Object[] attributes)
    
  • getTypeMap()

    java.util.Map getTypeMap()
    
  • setTypeMap()

    void setTypeMap(java.util.Map map)
    
制限のあるオプションのメソッド

以下のオプションの java.sql.Connection メソッドは、制限事項または制約付きで実装されています。

  • prepareCall()

    TYPE_FORWARD_ONLY のみが resultSetType でサポートされます。CONCUR_READ_ONLY のみが resultSetConcurrency でサポートされます。

    java.sql.CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
    
  • setReadOnly()

    空命令 (InterSystems IRIS ドライバは READ_ONLY モードをサポートしない)

    void setReadOnly(Boolean readOnly)
    
  • setCatalog()

    空命令 (InterSystems IRIS ドライバはカタログをサポートしない)

    void setCatalog(String catalog)
    
  • setTransactionIsolation()

    TRANSACTION_READ_COMMITED および TRANSACTION_READ_UNCOMMITED のみが level でサポートされます。

    void setTransactionIsolation(int level)
    

以下の java.sql.Connection メソッドは resultSetHoldability に対して CLOSE_CURSORS_AT_COMMIT をサポートしません。

  • createStatement()

    java.sql.Statement createStatement(int resultSetType, int result, int resultSetHoldability)
    
  • prepareCall()

    java.sql.CallableStatement prepareCall(String sql,
                                           int resultSetType,
                                           int resultSetConcurrency,
                                           int resultSetHoldability)
    
  • prepareStatement()

    java.sql.PreparedStatement prepareStatement(String sql,
                                           int resultSetType,
                                           int resultSetConcurrency,
                                           int resultSetHoldability)
    

InterSystems IRIS では現在、0 個または 1 個の自動生成キーのみがサポートされています。以下の java.sql.Connection メソッドに、配列の長さが 1 以外の columnIndexes 配列または columnNames 配列を指定すると、例外がスローされます。

  • prepareStatement()

    java.sql.PreparedStatement prepareStatement(String sql, int[] columnIndexes)
    java.sql.PreparedStatement prepareStatement(String sql, String[] columnNames)
    

DatabaseMetaData : バリアント・メソッド

バリアント・メソッド

java.sql.DatabaseMetaData は完全にサポートされますが、戻り値の処理をインターシステムズ固有の方法で行うために JDBC 標準と異なるメソッドが含まれます。以下のメソッドが影響を受けます。

  • supportsMixedCaseQuotedIdentifiers()

    InterSystems IRIS は false を返します。これは JDBC 準拠ではありません。

    boolean supportsMixedCaseQuotedIdentifiers()
    
  • getIdentifierQuoteString()

    区切り識別子のサポートがオンの場合、InterSystems IRIS は " (二重引用符) を返します。これは、JDBC 準拠のドライバが返す値です。そうでない場合、InterSystems IRIS はスペースを返します。

    String getIdentifierQuoteString()
    

Driver : サポートされないメソッド

サポートされないオプションのメソッド

java.sql.Driver は、以下のオプションのメソッドをサポートしません。

  • getParentLogger()

    void getParentLogger()
    

PreparedStatement : サポートされないメソッド

サポートされないオプションのメソッド

java.sql.PreparedStatement は、以下のオプションのメソッドをサポートしません。

  • setArray()

    void setArray(int i, Array x)
    
  • setRef()

    void setRef(int i, Ref x)
    
  • setRowId()

    void setRowId(int parameterIndex, RowId x)
    
  • setSQLXML()

    void setSQLXML(int parameterIndex, SQLXML xmlObject)
    
  • setUnicodeStream()

    Java JDK 仕様で廃止されました。

    void setUnicodeStream(int i, InputStream x, int length)
    
  • setURL()

    void setURL(int i, java.net.URL x)
    

ResultSet : サポートされないまたは制限のあるメソッド

制限のあるオプションのメソッド

InterSystems IRIS は、TYPE_SCROLL_SENSITIVE 結果セット・タイプをサポートしません。以下のメソッドは、制限事項付きで実装されています。

  • setFetchDirection()

    ResultSet.FETCH_REVERSE をサポートしません (代わりに、結果セットのカーソルを最後の行に移動する場合は afterLast を使用し、逆方向にスクロールする場合は previous を使用)。

    void setFetchDirection(int direction)
    
サポートされないオプションのメソッド

java.sql.ResultSet は、以下のオプションのメソッドをサポートしません。

  • getArray()

    Array getArray(int i)
    Array getArray(String colName)
    
  • getCursorName()

    String getCursorName()
    
  • getObject()

    Object getObject(int i, java.util.Map map)
    Object getObject(String colName, java.util.Map map)
    
  • getRef()

    Ref getRef(int i)
    Ref getRef(String colName)
    
  • getHoldability()

    int getHoldability()
    
  • getUnicodeStream()

    Java JDK 仕様で廃止されました。

    java.io.InputStream getUnicodeStream(int i)
    java.io.InputStream getUnicodeStream(String colName)
    
  • getURL()

    java.net.URL getURL(int i)
    java.net.URL getURL(String colName)
    
  • updateArray()

    void updateArray(int i, Array x)
    void updateArray(String colName, Array x)
    
  • updateRef()

    void updateRef(int i, Ref x)
    void updateRef(String colName, Ref x)
    

Statement : サポートされないまたは制限のあるメソッド

サポートされないオプションのメソッド

java.sql.Statement は、以下のオプションのメソッドをサポートしません。

  • cancel()

    void cancel()
    
  • closeOnCompletion()

    void closeOnCompletion()
    
  • isCloseOnCompletion()

    boolean isCloseOnCompletion()
    
制限のあるオプションのメソッド

以下のオプションの java.sql.Statement メソッドは、制限事項または制約付きで実装されています。

  • getResultSetHoldability()

    HOLD_CURSORS_OVER_COMMIT のみ

    int getResultSetHoldability()
    
  • setCursorName()

    空命令

    void setCursorName(String name)
    
  • setEscapeProcessing()

    空命令 (適用されない)

    void setEscapeProcessing(Boolean enable)
    
  • setFetchDirection()

    ResultSet.FETCH_REVERSE をサポートしません (代わりに、結果セットのカーソルを最後の行に移動する場合は afterLast を使用し、逆方向にスクロールする場合は previous を使用)。

    void setFetchDirection(int direction)
    

InterSystems IRIS がサポートする自動生成キーは、現在 0 個または 1 個のみです。以下の java.sql.Statement メソッドが、配列の長さが 1 以外の columnIndexes 配列または columnNames 配列を指定すると、例外がスローされます。

  • execute()

    boolean execute(String sql, int[] columnIndexes)
    boolean execute(String sql, String[] columnNames)
    
  • executeUpdate()

    int executeUpdate(String sql, int[] columnIndexes)
    int executeUpdate(String sql, String[] columnNames)
    

インターシステムズの拡張機能と拡張メソッド

以下のクラスは、さらに別のインターシステムズ固有の拡張メソッドを提供します。

CallableStatement getBinaryStream() 拡張メソッド

java.sql.CallableStatement は、以下のさらに別のインターシステムズ固有の拡張メソッドを実装します。

  • getBinaryStream()

    指定されたパラメータの値を java.io.InputStream オブジェクトとして取得します (ここで、i はパラメータのインデックスです)。

    java.io.InputStream getBinaryStream(int i)
    

    このメソッドは、標準の setBinaryStream() メソッドを補完するもので、getCharacterStream() (java.io.Reader を返す) に代わるものです。

ConnectionPoolDataSource の拡張メソッドと拡張機能

com.intersystems.jdbc.IRISConnectionPoolDataSource クラスは、javax.sql.ConnectionPoolDataSource インタフェースを完全に実装します。このクラスは、InterSystems JDBC ドライバでサポートされていない javax.sql.CommonDataSource のメソッドを継承しません。

制限のあるメソッド

getPooledConnection() は、JDBC 標準で必要なため実装されますが、InterSystems IRIS 実装を直接呼び出すことはできません。InterSystems IRIS ドライバ接続の取得は常に getConnection() メソッドを呼び出すことによって行う必要があります (詳細は、"InterSystems ソフトウェアでの Java の使用法" の “接続プールの使用法” を参照してください)。

  • getPooledConnection()

    javax.sql.PooledConnection getPooledConnection()
    javax.sql.PooledConnection getPooledConnection(String usr,String pwd)
    
    
Caution:

アプリケーションの呼び出しに getPooledConnection() メソッドまたは PooledConnection クラスを使用しないでください。(IRISDataSource から継承された) getConnection() メソッドを呼び出して、常に InterSystems IRIS ドライバ接続を取得する必要があります。InterSystems IRIS ドライバは、プーリングが返す java.sql.Connection オブジェクトを使用して、このプーリングを透過的に提供します。

IRISConnectionPoolDataSource は、さらに別のインターシステムズの拡張メソッドを提供する IRISDataSource (“DataSource の拡張メソッドと拡張機能” を参照) から継承します。

ConnectionPoolDataSource 拡張メソッド

IRISConnectionPoolDataSource は、さらに以下の InterSystems IRIS 限定管理メソッドもサポートします (詳細は、"InterSystems ソフトウェアでの Java の使用法" の “接続プールの使用法” を参照してください)。

  • restartConnectionPool()

    接続プールを再起動します。物理接続をすべて切断し、接続プールを空にします。

    void restartConnectionPool()
    
  • getPoolCount()

    接続プール内の現在のエントリ数を返します。

    int getPoolCount()
    
  • setMaxPoolSize()

    接続プールの最大サイズを設定します。最大サイズが設定されていない場合、既定値として 40 に設定されます。

    void setMaxPoolSize(int max)
    
  • getMaxPoolSize()

    現在の接続プールの最大サイズを返します。

    int getMaxPoolSize()
    

DataSource の拡張メソッドと拡張機能

com.intersystems.jdbc.IRISDataSource クラスは、javax.sql.DataSource インタフェースを完全に実装します。このクラスは、InterSystems JDBC ドライバでサポートされていない javax.sql.CommonDataSource のメソッドを継承しません。

必須の拡張メソッド

このメソッドの InterSystems IRIS 実装は、自動の透過的な接続プーリングを提供するために拡張されます (詳細は、"InterSystems ソフトウェアでの Java の使用法" の “接続プールの使用法” を参照してください)。

  • getConnection()

    java.sql.Connection getConnection()
    java.sql.Connection getConnection(String usr,String pwd)
    

DataSource 拡張メソッド

インタフェースで定義されるメソッドに加えて、IRISDataSource は、InterSystems IRIS でサポートされる DataSource プロパティの取得と設定に使用できる以下のメソッドも実装します (詳細は、"InterSystems ソフトウェアでの Java の使用法" の “接続プロパティ” を参照してください)。

  • getConnectionSecurityLevel()

    現在の接続セキュリティ・レベルの設定を表す int を返します。

    int getConnectionSecurityLevel()
    
  • getDatabaseName()

    現在のデータベース (InterSystems IRIS ネームスペース) の名前を表す文字列を返します。

    String getDatabaseName()
    
  • getDataSourceName()

    現在のデータ・ソース名を表す文字列を返します。

    String getDataSourceName()
    
  • getDefaultTransactionIsolation()

    現在の既定のトランザクション分離を取得します。

    int getDefaultTransactionIsolation()
    
  • getDescription()

    現在の記述を表す文字列を返します。

    String getDescription()
    
  • getEventClass()

    イベント・クラス・オブジェクトを表す文字列を返します。

    String getEventClass()
    
  • getKeyRecoveryPassword()

    現在のキー・リカバリ・パスワード設定を表す文字列を返します。

    getKeyRecoveryPassword()
    
  • getNodelay()

    現在の TCP_NODELAY オプション設定を表すブーリアンを返します。

    boolean getNodelay()
    
  • getPassword()

    現在のパスワードを表す文字列を返します。

    String getPassword()
    
  • getPortNumber()

    現在のポート番号を表す int を返します。

    int getPortNumber()
    
  • getServerName()

    現在のサーバ名を表す文字列を返します。

    String getServerName()
    
  • getServicePrincipalName()

    現在のサービス・プリンシパル名を表す文字列を返します。

    String getServicePrincipalName()
    
  • getSSLConfigurationName()

    現在の TLS 構成名の設定を表す文字列を返します。

    getSSLConfigurationName()
    
  • getURL()

    対象の接続の現在の URL を表す文字列を返します。

    String getURL()
    
  • getUser()

    現在のユーザ名を表す文字列を返します。

    String getUser()
    
  • setConnectionSecurityLevel()

    接続のセキュリティ・レベルを設定します。

    Sets the Connection Security Level for this DataSource object. 
    
  • setDatabaseName()

    対象の接続のデータベース名 (InterSystems IRIS ネームスペース) を設定します。

    void setDatabaseName(String dn)
    
  • setDataSourceName()

    対象の接続のデータ・ソース名を設定します。DataSourceName はオプション設定で、IRISDataSource の接続には使用されません。

    void setDataSourceName(String dsn)
    
  • setDefaultTransactionIsolation()

    トランザクションの既定の分離レベルを設定します。

    void setDefaultTransactionIsolation(int level)
    
  • setDescription()

    対象の接続の記述を設定します。Description はオプション設定で、IRISDataSource の接続には使用されません。

    void setDescription(String d)
    
  • setEventClass()

    対象の接続のイベント・クラスを設定します。このイベント・クラスは InterSystems IRIS JDBC 固有のメカニズムです。この機能は完全にオプションで、ほとんどのアプリケーションで必要ありません。

    InterSystems JDBC サーバは、トランザクションのコミット時およびロールバック時にクラスで実装されているメソッドにディスパッチします。これらのメソッドが実装されているクラスは、“イベント・クラス” と呼ばれます。イベント・クラスがログイン時に指定されると、JDBC サーバは、現在のトランザクションをコミットする直前に %OnTranCommit にディスパッチし、現在のトランザクションをロールバック (中止) する直前に %OnTranRollback にディスパッチします。ユーザ・イベント・クラスは %ServerEvent を拡張する必要があります。このメソッドは、いかなる値も返さず、現在のトランザクションを中止できません。

    void setEventClass(String e)
    
  • setKeyRecoveryPassword()

    対象の接続のキー・リカバリ・パスワードを設定します。

    setKeyRecoveryPassword(java.lang.String password) 
    
  • setLogFile()

    対象の接続のログ・ファイル名を無条件に設定します。

    setLogFile(java.lang.String logFile)
    
  • setNodelay()

    対象の接続の TCP_NODELAY オプションを設定します。このフラグを切り替えると、アプリケーションのパフォーマンスに影響する場合があります。設定されていない場合、既定値として true が設定されます。

    void setNodelay(boolean nd)
    
  • setPassword()

    対象の接続のパスワードを設定します。

    void setPassword(String p)
    
  • setPortNumber()

    対象の接続のポート番号を設定します。

    void setPortNumber(int pn)
    
  • setServerName()

    対象の接続のサーバ名を設定します。

    void setServerName(String sn)
    
  • setServicePrincipalName()

    対象の接続のサービス・プリンシパル名を設定します。

    void setServicePrincipalName(String name)
    
  • setSSLConfigurationName()

    対象の接続の TLS 構成名を設定します。

    setSSLConfigurationName(java.lang.String name)
    
  • setURL()

    対象の接続の URL を設定します。

    void setURL(String u)
    
  • setUser()

    対象の接続のユーザ名を設定します。

    void setUser(String u)
    
FeedbackOpens in a new tab