如何有效地实现连接池?

时间:2013-02-12 00:53:57

标签: java-ee jdbc datasource connection-pooling

我连接到数据库的代码使用BasicDataSource如下,参考Ans我想我的代码创建了与数据库ONCE的物理连接,然后提供了池连接。 我的问题是,我的代码是否提供了池连接?如果是,我是否应该在以下方法或构造函数中保留代码的连接部分以提供有效的池化?应该如何成为班级状态的注释? @Stateful?

        // 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";
            }

1 个答案:

答案 0 :(得分:4)

BasicDataSource实现了连接池。但是,如果每次创建一个新池,那么它就没用了。创建一次数据源并在任何地方重复使用。

通常,在Java EE中,您注入数据源。也就是说,容器为您管理数据源。在bean中注入数据源就像

一样简单
@Resource
private DataSource movieDatabase;

this example。但是,配置数据源取决于您使用的容器。相同的数据源可用于有状态和无状态bean。