首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

在不用连接池时,这样封装JDBC会有什么有关问题么

2012-09-10 
在不用连接池时,这样封装JDBC会有什么问题么?我发现不用连接池,每次有请求要访问DB时都创建一个connection

在不用连接池时,这样封装JDBC会有什么问题么?
我发现不用连接池,每次有请求要访问DB时都创建一个connection会很费时间,所以我想到了单例,就是把Connection做成单例,如下:

Java code
public class DB {        private static Connection conn = null;    static {        try {            Class.forName("com.mysql.jdbc.Driver");            conn = DriverManager.getConnection(                    "jdbc:mysql://localhost:3306/bbs", "root", "root");        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        }            }        public static Connection getConn() {        return conn;    }}

这样的话,所有操作都用这一个connection,就第一次要创建connection对象回慢一点,以后创好了都很快。
但是我只在一台电脑上测试过,如果同时有多台电脑来获取这个connectin,会是什么情景呢?想象不到,请高手解答。

会是同步的么?还是异步?既然大家都要用这个connection对象去创建Statement,会不会出现当第一个请求还没有创建完Statement时,那第二个和第三个请求都要进入等待状态,等第一个释放了connection对象再去抢呢?

[解决办法]
如果实现遵循jdbc规范,多线程公用connection没有问题,它是线程安全的。 不过效率会很低,同时只有一个线程可以操作这个相关对象。
[解决办法]
数据库连接不适用单例模式,效率低下,大家都用这一个连接,会很慢的
[解决办法]
这样的话 只创建一个数据库连接 效率肯定会很低啦 也存在同步的问题。

热点排行