Управление подключением к базе данных с использованием пула подключений или сеанса. Как? - PullRequest
2 голосов
/ 22 января 2010

У меня есть простое задание, но я не уверен, что это лучший путь.

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

Лучше ли добиться того, что я хочу сделать с помощью пула соединений или сеанса, или обоих? Пример кода будет оценен !!! большое спасибо вам.

Ответы [ 2 ]

1 голос
/ 22 января 2010

Определите управляемое контейнером соединение, объединенное в пул DataSource с привилегиями root на сервере, и для каждого пользователя используйте метод DataSource#getConnection(), который принимает имя пользователя и пароль в качестве аргументов.

0 голосов
/ 22 января 2010

Я столкнулся с той же проблемой с БД Oracle, где каждая транзакция должна регистрироваться для возможных проверок. Таким образом, каждый раз, когда пользователь проходит аутентификацию в веб-приложении, он помещает такой объект:

public class ConnectionUser implements Serializable {

private String userId;
private String password;
private String transactionKey;
//setters and getters

public boolean equals(Object object) {
    if(!(object instanceof org.ampf.af.jdbc.connection.ConnectionUser)) {
        return false;
    }
    if(object == null) {
        return false;
    }
    return (this.getUserId().equals(((ConnectionUser)object).getUserId()) && 
            this.getPassword().equals(((ConnectionUser)object).getPassword()));
}

Затем я реализовал пул соединений (на основе карты), где ключом является объект ConnectionUser, а значением является открытое соединение. Если ключ не существует на карте, он создает соединение и размещает его на карте.

Надеюсь, это поможет вам.

...