SQLInputImpl

SQLInputImpl (UDT 커스텀 매핑 입력 스트림)

사용자 정의 타입(UDT)을 커스텀 매핑할 때 쓰는 입력 스트림입니다. SQLInputImpl 객체는 UDT의 속성 값들이 담긴 값의 흐름을 보관하는 입력 스트림이며, 커스텀 매핑이 있는 SQL 구조체(distinct) 타입에 대해 getObject 메서드가 호출될 때 드라이버가 내부적으로 사용합니다.

출처: Java API Reference

본문

프로그래머가 SQLInputImpl 메서드를 직접 호출할 일은 없지만, RowSet 구현을 작성하는 사람에게 편의를 제공하기 위해 제공됩니다. SQLInputImpl은 ResultSet의 getter 메서드와 유사한 읽기 메서드들을 제공하며, 이 메서드들로 SQLInputImpl 객체 안의 값을 읽을 수 있어요. wasNull 메서드는 마지막으로 읽은 값이 SQL NULL이었는지 판단하는 데 쓰입니다.

SQLData 인터페이스를 구현한 클래스의 객체와 함께 getObject가 호출되면, JDBC 드라이버는 SQLData.getSQLType을 호출해 커스텀 매핑 대상 UDT의 SQL 타입을 알아냅니다. 드라이버는 UDT의 속성들로 채워진 SQLInputImpl 인스턴스를 만들고, 이 입력 스트림을 SQLData.readSQL에 전달합니다. readSQL은 내부적으로 SQLInputImpl의 읽기 메서드를 호출해 스트림에서 속성들을 읽어요.

생성자는 주어진 속성 배열(attributes)과 타입 맵(map)으로 초기화되며, 속성 중 이름이 타입 맵에 들어 있는 UDT라면 해당 SQLData 구현에 따라 매핑됩니다. 대부분의 읽기 메서드는 반환 타입이 기대 타입인지에 대한 타입 안전 검사를 하지 않으며, 이 책임은 SQLData 구현에 정의된 UDT 매핑에 위임됩니다.

대표적인 메서드

public SQLInputImpl(Object[] attributes, Map<String,Class<?>> map) throws SQLException
public String readString() throws SQLException
public boolean readBoolean() throws SQLException
public int readInt() throws SQLException
public Object readObject() throws SQLException
public boolean wasNull() throws SQLException

더 알아보기 (Learn more)

Java 공식 API