Oracle 큰 필드 순수 jdbc 저장 방법

디 렉 터 리:
1. 유 니 버 설 필드 jdbc 저장 방법
2. Oacle Clob 저장 방법
3. Oacle Blob 저장 방법
내용:
    왜 그런 지 모 르 겠 습 니 다. 자신 이 데이터베이스 업 체 의 우두머리 라 는 지위 에 따라 Oacle 만 큰 필드 에 대한 처리 가 jdbc 의 기준 에 부합 되 지 않 기 때문에 다음 과 같은 Oacle 필드 에 대한 특수 처리 방법 이 나 타 났 습 니 다. 물론 hibenate 나 ibatis 는 자신 이 다음 과 같은 특별 처 리 를 했 습 니 다.
 
1. 유 니 버 설 필드 jdbc 저장 방법
    자주 사용 하 는 데이터베이스, 예 를 들 어 DB2, my sql, sqlserver, sybase 등 은 모두 표준 필드 처 리 를 지원 합 니 다. 그래 야 우리 프로그램 이 유창 하고 통용 되 며 물론 이것 도 표준 이 존재 하 는 의미 입 니 다.다음은 표준 방식 에 따라 사용 방법 을 사범 해 보 겠 습 니 다.
    먼저, 각각 두 가지 유형 을 구성 하여 자바. sql 패키지 의 Blob, Clob 인 터 페 이 스 를 실현 하고 인터페이스 가 제공 하 는 방법 을 완성 하 며 해당 하 는 구조 함 수 를 추가 합 니 다. 예 를 들 어 BlobImpl:
 
public class BlobImpl implements Blob {

	private byte[] binaryData = null;

	public BlobImpl(byte[] data) {
		setBinaryData(data);
	}

...
}

     ClobImpl:
public class ClobImpl implements Clob {
	
	public ClobImpl(String data){
		this.charData = data;
	}

...
}

     그리고 byte 배열 이나 String 구조 Blob, Clob 인 스 턴 스 를 통 해:
Blob blob = new BlobImpl(data);

Clob clob = new ClobImpl(data);

     마지막 으로 Prepared Statement 인 스 턴 스 의 setBlob 방법 을 통 해 데 이 터 를 데이터베이스 에 저장 합 니 다.
pst.setBlob(fieldIndex, new BlobImpl((byte[]) value));

pst.setClob(fieldIndex, new ClobImpl(((String) value)));

 2. Oacle Clob 저장 방법
    Oacle 구조 Clob 인 스 턴 스 를 가 질 때 Connection 을 가 진 다음 Oacle Clob 류 가 제공 하 는 정적 방법 으로 빈 clob 인 스 턴 스 를 구성 하고 마지막 으로 데 이 터 를 이 clob 인 스 턴 스 에 기록 하 며 상기 방법 으로 데이터베이스 에 저장 해 야 합 니 다.구조 예시 코드 는 다음 과 같다.
 
public CLOB getCLOB(Connection conn, String data) throws Exception {
    CLOB clob = null;
    Writer writer = null;
    try {
        clob = CLOB.createTemporary(conn, false,   CLOB.DURATION_SESSION);
        writer = clob.getCharacterOutputStream();
        writer.write((data).toCharArray());
        writer.flush();
    } catch (Exception e) {
        throw e;
    } finally {
        if (writer != null) {
	try {
	     writer.close();
              } catch (IOException e) {
                   Logger.log(Logger.WARNING, e.getMessage(), e);
                   e.printStackTrace();
              }
        }
     }
     return clob;
}

 3. Oacle Blob 저장 방법
    Oacle 구조 Blob 인 스 턴 스 를 만 들 때 도 Connection 을 가 진 다음 Oacle Blob 류 가 제공 하 는 정적 방법 으로 빈 blob 인 스 턴 스 를 만 들 고 마지막 으로 이 blob 인 스 턴 스 에 데 이 터 를 기록 하여 데이터베이스 에 저장 해 야 합 니 다.구조 예시 코드 는 다음 과 같다.
public BLOB getBLOB(Connection conn, byte[] data) throws Exception {
    BLOB blob = null;
    OutputStream output = null;
    try {
        blob = BLOB.createTemporary(conn, false, BLOB.DURATION_SESSION);
        output = blob.getBinaryOutputStream();
        output.write(data, 0, data.length);
    } catch (Exception e) {
        throw e;
    } finally {
        if (output != null) {
	try {
	    output.close();
	} catch (IOException e) {
                  Logger.log(Logger.WARNING, e.getMessage(), e);
	    e.printStackTrace();
	}
         }
    }
    return blob;
}

좋은 웹페이지 즐겨찾기