Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да запазите ГОЛЕМИ BLOB (>100MB) в Oracle с помощта на Hibernate

Имах същите проблеми като вас при опит за картографиране с помощта на тип "blob". Ето връзка към публикация, която направих на сайта за хибернация: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

За да отстраня проблема, използвах код, който имаше персонализиран UserType за Blob, имах типа на връщане да бъде 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчисляване на средната цена на инвентара в SQL

  2. Какво представлява Oracle SQL и PL/SQL? Всичко, което един начинаещ трябва да знае

  3. Как да използвате Distributed AD, за да намалите времето за корекция в Oracle EBS

  4. Как мога да извлека файлове от поле на Oracle BLOB?

  5. Предимства от изучаването на нови DB системи