Wrapper
Wrapper (랩퍼 인터페이스)
관련 인스턴스가 실제로 프록시 클래스일 때 위임(delegate) 인스턴스를 검색할 수 있는 능력을 제공하는 JDBC 클래스를 위한 인터페이스입니다. 랩퍼 패턴은 많은 JDBC 드라이버 구현이 전통적인 JDBC API를 넘어 데이터 소스에 특화된 확장을 제공하는 데 사용합니다.
본문
개발자는 실제 자원을 나타내는 프록시 클래스 인스턴스로 감싸진(delegate) 자원에 접근하기를 원할 수 있어요. 이 인터페이스는 프록시로 표현된 감싸진 자원에 접근하는 표준 메커니즘을 설명해 자원 delegate에 직접 접근할 수 있게 해줍니다.
unwrap은 지정된 인터페이스를 구현하는 객체를 반환해 프록시가 노출하지 않는 비표준 메서드나 표준 메서드에 접근할 수 있게 합니다. 수신자가 인터페이스를 구현하면 결과는 수신자(또는 그 프록시)이고, 수신자가 랩퍼이고 감싸진 객체가 인터페이스를 구현하면 결과는 감싸진 객체입니다. 그렇지 않으면 unwrap을 재귀적으로 호출하며, 수신자가 랩퍼가 아니고 인터페이스도 구현하지 않으면 SQLException을 던집니다.
isWrapperFor는 이 객체가 인터페이스를 구현하거나 그것을 구현하는 객체의 직간접 랩퍼인지 여부를 반환합니다. 이 메서드는 unwrap에 비해 저비용 연산으로 구현되어야 하며, true를 반환하면 같은 인자로 unwrap을 호출하는 것이 성공해야 합니다.
<T> T unwrap(Class<T> iface) throws SQLException
boolean isWrapperFor(Class<?> iface) throws SQLException