kinjouj.github.io

Oracle Type Mapping

2010-01-26T00:00:00+09:00 Database Oracle

Oracle TypeMappingメモ

テーブルにタイプ形式をマッピングする。その際にタイプ形式にはJavaオブジェクトなどをリンクさせる

Javaオブジェクトを作成

SQLDataインターフェースを実装して作成

import java.io.*;
import java.sql.*;

public class Person implements SQLData {

    private String _type = "hoge.PERSON_T";
    public int id;
    public String name;

    public String getSQLTypeName() throws SQLException {
        return this._type;
    }

    public void readSQL(SQLInput in,String typeName) throws SQLException {
        this._type = typeName;
        this.id = in.readInt();
        this.name = in.readString();
    }

    public void writeSQL(SQLOutput out) throws SQLException {
        out.writeInt(this.id);
        out.writeString(this.name);
    }
}

JavaオブジェクトをOracleにロード

loadjava -u hoge/hoge -r -f -v Person.class

タイプを作成

CREATE TYPE PERSON_T AS OBJECT EXTERNAL NAME "Person" LANGUAGE JAVA USING SQLDATA (
    id number(10) external name "id",
    name varchar2(100) external name "name"
);

テーブルを作成

作成する際にタイプを指定する

CREATE TABLE PERSON_OBJTBL of PERSON_T;