我有以下问题,我知道已经有很多问题,但是这些问题都没有给我一个令人满意的答案!我用C ++写了很多东西,这种语言提供了一个析构函数,而Java并不是因为垃圾回收。
针对我的情况进行了一些介绍:我编写了一个访问本地Sqlite3数据库的软件。我编写了一个用于访问此数据库的中央单例类。其他多个类通过此包装器类访问数据库。这是此包装器类的伪代码:
public class MyDbWrapper
{
private currentDbConnection;
public MyDbWrapper(dbPath)
{
// Open the database connection with given path
}
public readFromDb()
{
... // Uses the class member currentDbConnection
}
public writeToDb()
{
... // Uses the class member currentDbConnection
}
public closeDb()
{
...
}
}
现在我的问题是,如何在退出应用程序之前确保关闭数据库连接?是的,我已经实现了该AutoCloseable接口,是的,我已经做了很多工作try-with-resources,但是由于有多个类的访问,所以这实际上不是一个选择!在C ++中的析构函数将解决这个问题,但该方法在Java中可能的“等价物”finalize被弃用!
那么,还有其他选择吗?还是应该完全重新设计完整的包装器?如果是,每次重新打开数据库时,如何防止由于大量读写访问而导致的性能问题?
郎朗坤
相关分类