我遇到了以下问题,我知道已经有很多问题了,但是这些问题都没有给我一个令人满意的答案!我用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
可能的“等效”已被弃用!
那么还有其他选择,还是应该完全重新设计完整的包装器?如果是,那么每次重新打开数据库时,如何避免由于大量读写访问而导致的性能问题?
答案 0 :(得分:1)