@Override public void storeLocalLoginToken(String userName, String sourceServerName, String loginToken) { LocalLoginToken existing = getLocalLoginToken(userName, sourceServerName); Session session = this.sessionFactory.getSessionFactory().openSession(); Transaction t = session.beginTransaction(); try { t.begin(); if (existing != null) { this.logger.info("Updating token for [{}@{}]", userName, sourceServerName); existing.setLoginToken(loginToken); session.update(existing); } else { this.logger.info("Saving new token for [{}@{}]", userName, sourceServerName); session.save(new LocalLoginToken(userName, sourceServerName, loginToken)); } t.commit(); } catch (HibernateException ex) { this.logger.error("Error storing local login token for [{}@{}]: [{}]", userName, sourceServerName, ex); if (t != null) { t.rollback(); } } finally { session.close(); } }