session.beginTransaction() начинает новую транзакцию, поэтому у тебя в коде открывается и тут же коммитится новая транзакция, а старая так и останется висеть.
Session session = sessionFactory.openSession();
Transaction tx;
try {
tx = session.beginTransaction();
Role hr = new Role();
hr.setRole("hr");
session.save(hr);
tx.commit();
}
catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
tx.rollback();
}
finally {
session.close();
HibernateUtil.shutdown();
System.out.println("after");
}