2013-02-04 3 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.

Я уверен, что это неправильно, но я также попытался сделать общедоступный метод, который возвращает соединение conn, а затем попытался вызвать этот метод из Main.

conn = Main.returnConnection(); 

Что делать в этой ситуации? Довольно смущенный тем, как я должен моделировать это.

ответ

0

Я понял, что цель шаблона Singleton состоит в том, чтобы создать один экземпляр чего-то и позволить ему увидеть все.

Таким образом, я сделал это публичным статическим void вместо этого и теперь могу получить доступ к соединению, не создавая новый каждый раз.

Исправьте меня, если я ошибаюсь, но это работает нормально.

1

Ваш подход настолько примитивен, когда его сравнивают с Пул соединений. Пул соединений означает пул, который включает в себя кешированные, многоразовые соединения, которые могут использоваться в будущих запросах. Как вы сказали, открытие соединения для каждого пользователя - дорогостоящий процесс, при котором статическое соединение для каждого пользователя встречается с конфликтами. Пул соединений - это стандарт, который должен использоваться в таких обстоятельствах.

connection = connectionPool.getConnection(); 

Верхний код означает получить соединение из пула, если все соединения уже выделены, механизм автоматически создает новый.

Самые популярные библиотеки: