When to use transaction.rollback() in hibernate

553 Views Asked by At

When we call transaction.rollback(), Hibernate rolls-back the database transaction. Database handles rollback, thus removing newly created object. But I am not able to understand if we should use rollback in catch block even if we have only one row insertion or updation in a single table.

For example this Code, the procedure is written only to write/update data in one table:

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;
}

Is the Constants.sessionRollBack(session) necessary in this methods case?

0

There are 0 best solutions below