Java : Wrapper (JDBC) - API使用例
Wrapper (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
概要
Wrapper インタフェースを使うと、各ドライバ固有の API を利用できます。
補足
- JDBC のドライバには Apache Derby を使っています。
Apache Derby は、古い JDK に含まれていたこともありましたが、最新の JDK には含まれていません。
final var url = "jdbc:derby:memory:db;create=true";
try (final var connection = DriverManager.getConnection(url)) {
final var iface = EmbedConnection.class;
System.out.println("iface = " + iface);
if (connection.isWrapperFor(iface)) {
System.out.println("isWrapperFor = true");
final EmbedConnection unwrapped = connection.unwrap(iface);
System.out.println("unwrapped = " + unwrapped);
}
}
// 結果
// ↓
//iface = class org.apache.derby.impl.jdbc.EmbedConnection
//isWrapperFor = true
//unwrapped = org.apache.derby.impl.jdbc.EmbedConnection@626393072
// (XID = 166), (SESSIONID = 1), (DATABASE = memory:db), (DRDAID = null)
メソッド
boolean isWrapperFor (Class<?> iface)
final var url = "jdbc:derby:memory:db;create=true";
try (final var connection = DriverManager.getConnection(url)) {
final var iface = EmbedConnection.class;
System.out.println("iface = " + iface);
if (connection.isWrapperFor(iface)) {
System.out.println("isWrapperFor = true");
final EmbedConnection unwrapped = connection.unwrap(iface);
System.out.println("unwrapped = " + unwrapped);
}
}
// 結果
// ↓
//iface = class org.apache.derby.impl.jdbc.EmbedConnection
//isWrapperFor = true
//unwrapped = org.apache.derby.impl.jdbc.EmbedConnection@626393072
// (XID = 166), (SESSIONID = 1), (DATABASE = memory:db), (DRDAID = null)
<T> T unwrap (Class<T> iface)
final var url = "jdbc:derby:memory:db;create=true";
try (final var connection = DriverManager.getConnection(url)) {
final var iface = EmbedConnection.class;
System.out.println("iface = " + iface);
if (connection.isWrapperFor(iface)) {
System.out.println("isWrapperFor = true");
final EmbedConnection unwrapped = connection.unwrap(iface);
System.out.println("unwrapped = " + unwrapped);
}
}
// 結果
// ↓
//iface = class org.apache.derby.impl.jdbc.EmbedConnection
//isWrapperFor = true
//unwrapped = org.apache.derby.impl.jdbc.EmbedConnection@626393072
// (XID = 166), (SESSIONID = 1), (DATABASE = memory:db), (DRDAID = null)
関連記事
- API 使用例