2014-07-18 1 views
0

우리는 데이터베이스로서 oracle을 사용하고 있으며 데이터베이스에 3 개의 레코드가 부족합니다. 각 행을 읽으려면 일부 기준에 따라 행을 업데이트해야합니다. Java를 통해이를 달성하는 가장 빠른 방법은 무엇입니까?JAVA를 사용하는 대량 데이터베이스 업데이트

+0

을하는 데 도움이 hibernate.Hope 가고, 다시 시작 (잘못된 캐싱을 방지하기 위해). 비 트랜잭션 성, 데이터베이스만큼이나. 가능하면 이전 값 + 새로 계산 된 값을 가진 임시 테이블을 사용하여 안전한 업데이트가 가능합니다. –

답변

0

당신은

http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/batch.html 


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

가장 빠른 방법은 저장 프로 시저를 사용하고 내부에 기준 로직을 구현하는 것입니다 최대 절전 모드에서 일괄 처리를 참조 할 수 있습니다.

그러나 자바에서는 jdbc/hibernate.Choice를 사용할 수 있습니다. 선택은 다른 프레임 워크 또는 응용 프로그램 계층과의 요구 사항 및 통합에 따라 달라집니다.

이 요구 사항은 다음 jdbc.Otherwise로 이동 전체 채우기에 대한 간단한 응용 프로그램이 트랜잭션 관리, 캐싱 및 기타 물건을 갖고 싶어한다면, 그것은 아마도 응용 프로그램 외부에서 당신에게

+0

JDBC에 트랜잭션 관리가 없습니다. :) – Kayaman