Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstawianie zbiorcze lub aktualizowanie za pomocą Hibernate?

Istnieje wiele możliwych wąskich gardeł w operacjach masowych. Najlepsze podejście zależy w dużej mierze od tego, jak wyglądają Twoje dane. Zapoznaj się z Podręcznikiem hibernacji sekcja dotycząca przetwarzania wsadowego.

Upewnij się przynajmniej, że używasz następującego wzoru (skopiowanego z instrukcji):

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();

Jeśli mapujesz płaski plik do bardzo złożonego wykresu obiektów, być może będziesz musiał być bardziej kreatywny, ale podstawową zasadą jest to, że musisz znaleźć równowagę między wpychaniem porcji danych o dużych rozmiarach do bazy danych przy każdym opróżnieniu/zatwierdzeniu a unikaniem powiększanie rozmiaru pamięci podręcznej na poziomie sesji.

Wreszcie, jeśli nie potrzebujesz Hibernate do obsługi jakichkolwiek kolekcji lub kaskadowania danych, aby poprawnie wstawić dane, rozważ użycie Sesja bezstanowa .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz typ zmiennej w MySQL

  2. Jak przywrócić plik SQL wygenerowany przez MySQLDump za pomocą wiersza poleceń?

  3. Jak wyświetlić błędy dla mojego zapytania MySQLi?

  4. SQL - liczenie wierszy o określonej wartości

  5. Jak ponownie połączyć utracone połączenia za pomocą EclipseLink?