Как сделать hibernate коммитом быстро и эффективно? - PullRequest
0 голосов
/ 30 декабря 2018

У меня 1000 потоков, и задача состоит в том, чтобы увеличить значение на 1 обновление базы данных.Например, например: изначально моя база данных имеет значение 0, первый поток идет, он увеличивает значение до 1, затем второй поток приходит, он увеличивает это значение до 2, затем третий приходит, он увеличивает значение до 3 и так до 1000 потоков, поэтомув конце, когда приходит 1000-й поток, он меняет значение на 1000 с 999.

Я написал код, и код работает отлично, но проблема в том, что обновление этих значений занимает больше минуты, поэтомукак минимизировать это время, чтобы 1000 потоков могли обновить его за наименьшее время.

public String increaseAndUpdateNumber() {
        Session session = getSession();
    try {
        synchronized (this) {
            int number = dao.getNumberdao().getNumberCount(session);
            Number numberObj = dao.getNumberdao().getByNumber(session,number);

            //begin of transaction
            Transaction numberTx = session.beginTransaction();
            number+=1;
            System.out.println("number is :"+number+" numberObj :"+numberObj);
            numberObj.setNumber(number);
            dao.getNumberdao().update(session, numberObj);
            numberTx.commit();
            //end of transaction
        }
        return "success";
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        session.close();    
    }
    return null;
}

Действуйте этими 1000 потоками в наименьшее возможное время.

...