0
我的小程序正常终止,如果我不开始交易保存到一个事务。休眠程序仍在运行
public static void main(String[] args){
StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
SessionFactory sessionFactory = null;
Session session = null;
Transaction t = null;
try{
sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
session = sessionFactory.openSession();
session.beginTransaction();
session.save(new UserInfo("[email protected]", "password2", "erical garb"));
t = session.getTransaction();
t.commit();
}
catch (Exception e){
System.out.println("Could not create connection!");
e.printStackTrace();
}
finally{
DAOUtilities.closeResource(session, "Session");
DAOUtilities.closeResource(sessionFactory, "sessionFactory");
StandardServiceRegistryBuilder.destroy(registry);
System.out.println("Session open: " + session.isOpen());
System.out.println("Factory open: " + sessionFactory.isOpen());
System.out.println("Transaction active: " + t.isActive());
}
}
打印语句确认session和sessionFactory已成功关闭,并且事务不再处于活动状态。据我所知,没有办法检查注册表是否被成功销毁。下面是输出...
Hibernate: insert into UserInfo (loggedIn, name, password, email) values (?, ?, ?, ?)
Mar 24, 2017 12:37:49 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:postgresql://localhost:5432/hibernatedb]
Session open: false
Factory open: false
Transaction active: false
我缺少什么?任何建议将appriciated,谢谢。
注意:我的数据库gui正在检测每次执行的一次会话泄漏,并且更改准确地反映在数据库中。
您正在使用哪个版本的hibernate? –
休眠5.2.9。它是最新的“稳定”版本。我会尝试使用旧版本,但我怀疑这是问题所在。 –