有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java开放式数据库管理句柄

我在使用伯克利的数据库

一般来说,在这种类型的数据库中,你打开一个由一堆文件组成的环境来控制锁定和事务等,然后在这个环境中打开你的数据库

问题是有很多数据库要打开
打开数据库的方法是opendatabase()
然而,打开和关闭数据库总是很慢。。。文件上说

Opening a database is a relatively expensive operation, and maintaining a set of open databases will normally be preferable to repeatedly opening and closing the database for each new query.

问题是如何保持这种状态
我认为一个简单的解决方案是延迟加载

 private static Database db;
     public   CustomerDAO() {
            if (db == null) {
                try {
                    DatabaseConfig dbConfig = new DatabaseConfig();
                    dbConfig.setAllowCreate(true);
                    dbConfig.setType(DatabaseType.BTREE);
                    db = BDBEnvironment.DEFAULT.getEnvironment().openDatabase(null, "C:\\xxxx\\CUSTOMERS",
                            null, dbConfig); 

但这有一个双重检查锁定的问题。。对吧
另一个问题是,我想要一个默认文件名或用户指定的文件名。。当然,创建数据库管理器很容易,但总是会出现双重检查锁定问题
你知道如何维护一组数据库句柄吗


共 (1) 个答案

  1. # 1 楼答案

    使用基本的Java同步技术和线程安全的数据结构(如ConcurrentHashMap)来存储数据库句柄。如果你还没有读过this book,你可能应该读一读,因为它涵盖了这类问题所需要的很多内容