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

Групово вмъкване или актуализиране с Hibernate?

Има много възможни пречки пред груповите операции. Най-добрият подход зависи до голяма степен от това как изглеждат вашите данни. Разгледайте Наръчник за хибернация раздел за пакетна обработка.

Като минимум се уверете, че използвате следния шаблон (копиран от ръководството):

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
}

tx.commit();
session.close();

Ако съпоставяте плосък файл с много сложна обектна графика, може да се наложи да станете по-креативни, но основният принцип е, че трябва да намерите баланс между изпращането на големи парчета данни в базата данни с всяко изтриване/комит и избягване разширяване на размера на кеша на ниво сесия.

И накрая, ако не се нуждаете от Hibernate, за да обработвате каквито и да било колекции или каскади, за да бъдат данните ви правилно вмъкнати, помислете за използването на StatelessSession .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. прехвърляне на String към sql време

  2. MySQL Пълнотекстово търсене и SOUNDEX

  3. MySQL:Уникално ограничение за множество полета

  4. Предупреждение:mysqli_connect():Неизвестен хост на MySQL сървър

  5. как да промените времето за изчакване за постоянни връзки на mysql