sql >> データベース >  >> RDS >> Oracle

Hibernateを使用してOracleでLARGEBLOB(> 100MB)を永続化する方法

    「blob」タイプを使用してマップしようとしたときに、あなたと同じ問題が発生していました。 Hibernateサイトで作成した投稿へのリンクは次のとおりです:https://forum.hibernate.org/viewtopic.php?p =2452481#p2452481

    Hibernate 3.6.9
    Oracle Driver 11.2.0.2.0
    Oracle Database 11.2.0.2.0

    BlobのカスタムUserTypeを持つコードを使用した問題を修正するために、戻り型をjava.sql.Blobにしました。

    このUserTypeの主要なメソッド実装は次のとおりです。

    public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
    
       Blob blob = rs.getBlob(names[0]);
       if (blob == null)
          return null;
    
       return blob;
    }
    
    public void nullSafeSet(PreparedStatement st, Object value, int index)
         throws HibernateException, SQLException {
       if (value == null) {
          st.setNull(index, sqlTypes()[0]);
       }
       else {
          InputStream in = null;
          OutputStream out = null;
          // oracle.sql.BLOB
          BLOB tempBlob = BLOB.createTemporary(st.getConnection(), true, BLOB.DURATION_SESSION);
          tempBlob.open(BLOB.MODE_READWRITE);
          out = tempBlob.getBinaryOutputStream();
          Blob valueAsBlob = (Blob) value;
          in = valueAsBlob.getBinaryStream();
          StreamUtil.toOutput(in, out);
          out.flush();
          StreamUtil.close(out);
          tempBlob.close();
          st.setBlob(index, tempBlob);
          StreamUtil.close(in);
       }
    }
    


    1. メソッドorg.postgresql.jdbc4.Jdbc4Connection.isValid(int)はまだ実装されていません

    2. dockerpostgrespgadminローカル接続

    3. MySQLで特定の文字のASCIIコードを見つける方法

    4. Linux /MacからAmazonEC2でMySQLに接続するにはどうすればよいですか?