2013-06-13 2 views
2

Postgres의 BLOB에 MyBatis 사용자 지정 FILE 형식 처리기를 만들려고합니다. JDBC : 현재 연결을 얻는 방법?

@Override 
public File getNullableResult(ResultSet rs, String columnName) throws SQLException { 
    1.get current connection 
    2.get postgreSQL LargeObjectManager from current connection 
    3.get oid from ResultSet, so the Larget Object can be found 
    4.read the large object and rewrite it into a file 
    5.return the file 
} 

그러나 나는이 상황에서 현재 연결을 얻는 방법을 모르는 : 여기

내가 인터페이스를 수행하기 위해 구현해야하는 방법입니다. ResultSet으로부터 연결을 얻을 수있는 방법이 있습니까? 사전에

감사합니다,

UPDATE :

PostgreSQL의 특별한 (비표준 아마도) 방식으로 BLOB (대형 개체가 아닌 BYTEA)를 구현합니다. pg_largeobject 테이블에 모든 blob을 저장하고 실제 테이블에서 blob을 참조 할 수 있도록 oid를 "포인터"로 사용합니다.

Postgres JDBC 드라이버는 blob을 처리하기위한 API를 분리했습니다. 다음 링크에서 자세한 내용은 :

Connection connection = rs.getStatement().getConnection(); 

을하지만 rs에서 직접 가져 오기 BLOB 데이터를이 방법을 확인하십시오 : 는 http://jdbc.postgresql.org/documentation/91/binary-data.html

+0

을 그냥 덩어리를 가져올 수 없습니다 결과 집합에서 직접? –

+0

@MarkRotteveel 아니오, PostgreSQL은 blob을 특별한 방법으로 구현합니다. pg_largeobject 테이블에 모든 blob을 저장하고 실제 테이블에서 blob을 참조 할 수 있도록 oid를 "포인터"로 사용합니다. – Xin

+1

흥미 롭다면 postgresql JDBC 드라이버가 구현 세부 사항을 숨길 것으로 기대합니다. –

답변

1

당신은 사용할 수 있습니다

rs.getBinaryStream("myBlobColumn"); 
+0

Postgres에 대한 결과 집합에서 blob을 가져올 수 없습니다. 내 업데이트를 참조하십시오. – Xin

관련 문제