Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara mempertahankan BLOB BESAR (> 100MB) di Oracle menggunakan Hibernate

Saya mengalami masalah yang sama seperti Anda dalam mencoba memetakan menggunakan tipe "gumpalan". Berikut ini tautan ke posting yang saya buat di situs hibernate:https://forum.hibernate.org/viewtopic.php?p=2452481#p2452481

Hibernasi 3.6.9
Driver Oracle 11.2.0.2.0
Database Oracle 11.2.0.2.0

Untuk memperbaiki masalah saya menggunakan kode yang memiliki UserType khusus untuk Blob, saya memiliki tipe pengembalian menjadi java.sql.Blob.

Berikut adalah implementasi metode utama dari UserType ini:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rotate/pivot table dengan agregasi di Oracle

  2. 6 Cara Menghapus Baris Duplikat yang memiliki Kunci Utama di Oracle

  3. pilih dari satu tabel, masukkan ke tabel lain kueri Oracle sql

  4. apa yang terjadi pada fase cutover dari adopsi di R12.2

  5. PILIH KE menggunakan Oracle