2013-02-04 39 views
0

我有一个主类,一个登录类和一个gui类。我应该如何建模我的系统 - 数据库隐含

在我的主要内容中,我创建了一个使用Singleton模式的数据库连接 - 这个连接只有一个实例。

我想从登录访问数据库连接,以验证登录到系统的用户。内主要

我的连接方法:

/** 
* Use the Singleton pattern to create one Connection 
*/ 
private static Connection getConnection() { 
    if (conn != null) { 
     return conn; 
    } 
    try { 
     Class.forName(driver); 
    } catch (ClassNotFoundException e) { 
     System.out.println(e.getMessage() + " load driver error"); 
     System.exit(0); 
    } 
    try { 
     //conn = DriverManager.getConnection(host); 
     conn = DriverManager.getConnection(host + "create=true", dbUsername, dbPassword); 
    } catch (SQLException e) { 
     displayErr("Get connection error: ", e); 
     System.exit(0); 
    } 
    return conn; 
} 

现在,我想创建一个登录方法,我需要使用连接康涅狄格州。该方法是静态的,我不能使用连接。

我敢肯定,这是错误的,但我也试着制作一个公共方法,它返回连接conn,然后尝试从Main调用该方法。

conn = Main.returnConnection(); 

在这种情况下该怎么办?我很困惑我应该如何模拟这个。

回答

0

我想出了Singleton模式的目的是创建一个东西的实例,并允许每个人看到它。

所以我把它作为public static void来代替,现在可以访问连接,而不必每次都创建一个新连接。

纠正我,如果我错了,但这工作正常。

1

连接池相比,您的方法非常原始。连接池意味着一个包含缓存的可重用连接的池,这些连接可用于将来的请求。正如你所说的,为每个用户打开一个连接是一个昂贵的过程,同时给每个用户一个静态连接会发生冲突。连接池是在这种情况下应该使用的标准。

connection = connectionPool.getConnection(); 

上层代码表示从池中获取连接,如果所有连接都已分配,机制会自动创建一个新连接。

最流行的库是:

相关问题