Когда использовать transaction.rollback () в спящем режиме - PullRequest
0 голосов
/ 27 мая 2020

Когда мы вызываем transaction.rollback (), Hibernate откатывает транзакцию базы данных. База данных выполняет откат, таким образом удаляя вновь созданный объект. Но я не могу понять, следует ли использовать откат в блоке catch, даже если у нас есть только одна вставка или обновление строки в одной таблице.

Например, в этом Коде процедура написана только для записи / обновления данные в одной таблице:

public Map<String, Object> updateSOSDetails(SOSUserDetails sosUserDetails) {
    Map<String, Object> result = new HashMap<>();
    result.put(Constants.RESULT, false);
    Session session = null;
    try {
        Map<String, Object> output = null;
        session = cityAppSessionFactory.openSession();
        Query query = session.createNativeQuery("EXEC update_sos_details :userId,:contactName1,"
                        + ":contactNumber1,:contactRelation1,:contactName2,:contactNumber2,:contactRelation2");             
        query.setParameter(Constants.USERID, sosUserDetails.getUserId());
        query.setParameter("contactName1", sosUserDetails.getContactName1());
        query.setParameter("contactNumber1", sosUserDetails.getContactNumber1());
        query.setParameter("contactRelation1", sosUserDetails.getContactRelation1());
        query.setParameter("contactName2", sosUserDetails.getContactName2());
        query.setParameter("contactNumber2", sosUserDetails.getContactNumber2());
        query.setParameter("contactRelation2", sosUserDetails.getContactRelation2());
        session.beginTransaction();
        query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
        output = (Map<String, Object>) query.uniqueResult();
        session.getTransaction().commit();
        result.put(Constants.RESULT, true);
        result.put(Constants.OUTPUT, output);
    } catch (Exception e) {
        logger.error("::::::Exception in SOSDaoImpl updateSOSDetails : " + e.getMessage() + e );
        Constants.sessionRollBack(session); 
    } finally {
        Constants.closeSession(session);
    }
    return result;
}

Требуется ли Constants.sessionRollBack (session) в этом случае методов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...