0

メインクラス、ログインクラス、およびGUIクラスがあります。

メイン内で、シングルトンパターンを使用してデータベース接続を作成しています。この接続のインスタンスは1つだけです。

ログインからデータベース接続にアクセスして、システムにログインするときにユーザーを確認したい。

メイン内の私の接続方法:

/**
 * 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を使用できません。

これは間違いだと思いますが、接続connを返すパブリックメソッドを作成してから、Mainからそのメソッドを呼び出してみました。

conn = Main.returnConnection();

この状況で私は何をすべきですか?私がこれをどのようにモデル化することになっているのか、かなり混乱しています。

4

2 に答える 2

1

接続プーリングと比較すると、あなたのアプローチはとても原始的です。接続プールとは、将来のリクエストで使用できるキャッシュされた再利用可能な接続を含むプールを意味します。あなたが言ったように、各ユーザーの接続を開くことは高価なプロセスであり、各ユーザーに静的接続を提供すると競合が発生します。接続プーリングは、この種の状況で使用する必要がある標準です。

connection = connectionPool.getConnection();

上のコードは、プールから接続を取得することを意味します。すべての接続が既に割り当てられている場合、メカニズムは自動的に新しい接続を作成します。

最も一般的なライブラリは次のとおりです。

于 2013-02-22T13:58:15.710 に答える
0

Singleton パターンの目的は、何かの 1 つのインスタンスを作成し、それをすべての人が見られるようにすることだとわかりました。

そのため、代わりに public static void を作成し、毎回新しい接続を作成せずに接続にアクセスできるようにしました。

私が間違っている場合は修正してください。ただし、これは正常に機能します。

于 2013-02-08T10:50:48.590 に答える