2015-05-06 27 views
6

Mam wymóg, aby wstawiać tylko niektóre dane do bazy danych Oracle tylko do jednej tabeli, a nie żadnych relacji.Jak wstawić rekordy 50 KB do bazy danych Oracle?

Muszę wstawić więcej niż 50K rekordów w tej samej transakcji. Jaki jest najlepszy sposób na zrobienie tego? Używanie czystego JDBC, JPA lub itp ...

Który sposób (aktualizacja partii lub surowa na podstawie aktualizacji) lepiej jest wstawić około 50000 rekordów w tej samej transakcji?

+0

Możesz przejść z przetwarzaniem wsadowym. –

+2

Rekordy 50k są małe, wszystko może to zrobić. Jaki masz problem? – Mat

+0

Które API jest lepsze? Czysty JDBC lub JPA ... – user3496599

Odpowiedz

4

Hibernate: za pomocą aktualizacji wsadowego można wstawić swoje dane,

  1. Najpierw zapisać cały obiekt w sesji

    session.save(Object);

  2. flush() i clear() sesji

if ((batchCounter % 25000) == 0) { 
    session.flush(); 
    session.clear(); 
} 
  1. Commit wszystkie dane

    tx.commit();

+0

Które API jest najlepsze? Czysty JDBC lub JPA etc ... – user3496599

+0

JPA to dobry interfejs do pracy, przypuśćmy, że twoja baza danych się zmieni ... JPA ci pomoże .... Ma także różne zalety ... –

1

można użyć Java JDBC przygotowane oświadczenie.

// Create SQL statement 
String SQL = "INSERT INTO Employee (id, first, last, age) " + 
      "VALUES(?, ?, ?, ?)"; 

// Create PreparedStatement object 
PreparedStatemen pstmt = conn.prepareStatement(SQL); 

// Set auto-commit to false 
conn.setAutoCommit(false); 

// Set the variables 
pstmt.setInt(1, 400); 
pstmt.setString(2, "x"); 
pstmt.setString(3, "y"); 
pstmt.setInt(4, 33); 

// Add it to the batch 
pstmt.addBatch(); 

// Set the variables 
pstmt.setInt(1, 401); 
pstmt.setString(2, "p"); 
pstmt.setString(3, "q"); 
pstmt.setInt(4, 31); 

// Add it to the batch 
pstmt.addBatch(); 

// Create an int[] to hold returned values 
int[] count = stmt.executeBatch(); 

// Explicitly commit statements to apply changes 
conn.commit(); 
+0

Które API jest najlepsze? Pure JDBC lub JPA etc ... – user3496599

+0

decyduje się w zależności od wymagań. Jeśli twój projekt ma hibernację, to idź z nim. – Thilak

Powiązane problemy