我连接数据库的代码使用BasicDataSource如下,引用Ans我想我的代码创建一次到数据库的物理连接,然后提供池连接。 我的问题是,我的代码是否提供池连接?如果提供,我是否应该将代码的连接部分保留在以下方法或构造函数中以提供有效的池化?类状态的注释应该如何? @有状态?
// Connection section start
BasicDataSource bs = new BasicDataSource();
PreparedStatement ps = null;
Connection con = null;
try {
bs.setDriverClassName("com.mysql.jdbc.Driver");
bs.setUrl("jdbc:mysql://localhost/myDb");
bs.setUsername("root");
bs.setPassword("");
con = bs.getConnection();
System.out.println("Connecting");
// Connection section end
ps = con.prepareStatement("Select *"
+ " from Client WHERE Username = ? ");
ps.setString(1, username);
ResultSet r = ps.executeQuery();
if (r.next()) {
con.close();
return "true";
}
最佳答案
BasicDataSource
实现连接池。但是,如果每次都创建一个新池,那么它就没用了。创建数据源一次并在任何地方重复使用。
通常,在 Java EE 中,您注入(inject)数据源。也就是说,容器为您管理数据源。在 bean 中注入(inject)数据源非常简单
@Resource
private DataSource movieDatabase;
参见this example 。不过,配置数据源取决于您正在使用的容器。有状态 Bean 和无状态 Bean 可以使用相同的数据源。
关于jakarta-ee - 如何高效地实现连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823754/