我有一个简单的任务要完成,但我不确定什么是最好的方法。
每个用户都有自己的用户名和密码,可以连接到具有不同权限的数据库。一旦用户连接,他将根据他想要执行的操作进行多个查询。因此,我想保留与数据库的连接。所以这是我的问题?
通过连接池或会话或两者实现我想做的更好吗? 示例代码将不胜感激!!!非常感谢你。
答案 0 :(得分:1)
使用服务器中的“root”权限定义一个池化DataSource
的容器管理连接,并为每个用户使用DataSource#getConnection()
方法,该方法将用户名和密码作为参数。
答案 1 :(得分:0)
我遇到了与Oracle数据库相同的问题,每个事务都必须记录下来以进行可能的审计。 因此,每次用户在Web应用程序中进行身份验证时,都会显示如下对象:
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()));
}
然后我实现了一个连接池(基于Map),其中键是ConnectionUser对象,值是打开的连接。如果映射中不存在该键,则它会创建一个连接并将其分配到映射中。
我希望它可以帮到你。