Eu não vi você dando descarga na sua sessão
Session session = sessionFactory.openSession();
session.save(mc);
session.flush();
session.close();
Mas o mais preferível é
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(mc);
tx.commit(); // Flush happens automatically
}
catch (RuntimeException e) {
tx.rollback();
throw e; // or display error message
}
finally {
session.close();
}