【发布时间】:2014-07-28 11:58:25
【问题描述】:
我使用 H2 和 Hibernate 4.1 ORM 作为 JPA 2。
这是我的来自 persistence.xml 的数据库 URL。
<property name="javax.persistence.jdbc.url" value="jdbc:h2:./database/data;DB_CLOSE_ON_EXIT=FALSE;TRACE_LEVEL_FILE=3"/>
我将数据库设置为不自动关闭,因为我使用了一个关闭挂钩,它提交了一个事务。而且我还设置系统将所有 SQL 记录到跟踪文件中。我可以在文件中看到数据库接收到所有 SQL 命令。
我的钩子
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
if(main!=null)
{
main.Disconnect();
}
try
{
PersistenceHandler.em.getTransaction().commit();
PersistenceHandler.em.createQuery("SHUTDOWN COMPACT").executeUpdate();
PersistenceHandler.em.close();
}catch(Exception e){e.printStackTrace();}
try
{
Config.Write();
}
catch(Exception e)
{}
}
});
这在我的机器上工作,但在另一台相当缓慢的机器上工作。
【问题讨论】:
-
你是如何关闭 JVM 的?
-
System.exit(0) 那样