проблема в том, что после запуска hibernate при входе в систему я не могу полностью завершить программу, в Eclipse мне приходится вручную использовать параметр terminate после закрытия программы, и в качестве исполняемого файла jar программа остается открытой как процесс java дажекогда закрыто.
Этот метод используется классом входа в систему:
public class LoginService {
private User user = null;
// email = username
public User getUser(String email) throws Exception {
List<User> userList = new ArrayList<>();
Session session = ConnectionHelper.getSessionFactory().openSession(); // Creates session
CriteriaBuilder builder = session.getCriteriaBuilder(); // Create builder
CriteriaQuery<User> query = builder.createQuery(User.class); // Create query
Root<User> userRoot = query.from(User.class); // SELECT FROM USER
query.where(builder.equal(userRoot.get("email"), email)); // WHERE EMAIL = ????
userList = session.createQuery(query).getResultList(); // Runs the query, gets result
if (userList.size()>0) { // Checks for null value
user = userList.get(0); // Gets value if not null
}
return user; // Returns user object
}
}
И этот класс имеет информацию о соединении:
public class ConnectionHelper {
private static SessionFactory sessionFactory = null;
private static ServiceRegistry registry;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
createSessionFactory();
}
return sessionFactory;
}
private synchronized static void createSessionFactory() {
Configuration config = new Configuration().configure("/res/hibernate.cfg.xml");
config.addAnnotatedClass(User.class);
registry = new StandardServiceRegistryBuilder().applySettings(
config.getProperties()).build();
sessionFactory = config.buildSessionFactory(registry);
}
public void stop() throws Exception {
sessionFactory.close();
}
}
Я пытался использовать session.close в методе службы входа в систему, где пользователь / пароль проходит проверку подлинности, но это не сработало.