jakarta-ee - 如何高效地实现连接池?

标签 jakarta-ee jdbc datasource connection-pooling

我连接数据库的代码使用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/

相关文章:

java - 'correct' 实例化JPA管理器bean的方法?

java - bean 类 [org.apache.commons.dbcp.BasicDataSource] 的属性 'connectionProperties' 无效

java - 如何使用 JDBC 驱动程序和 SSL 连接连接到 Sybase ASE

ASP.NET - DataSourceID 和 DataSource 有什么区别?

postgresql - WSO2 "Use Data Source Factory"JNDI 数据源的选项

jsp - JSF 按钮重置 session

java - sendRedirect 到另一个不在 Appfuse 应用程序中工作的域

sql-server - 以 XML 或 SQL 格式存储数据?

Java Web 服务 - 何时使用 XmlAttribute?

java - Spring : previous Line in jdbc template