首先,对不起~分不足10分了~= =!分就没法给了~= =!如题~大家都知道一个connection可以对应几个statement~但在校学习~看代码实例~以及公司实习的过程中,我却发现接触的全是先取得一个connection~然后再从这个connection得到一个statement~也就是connection和statement全是1:1的关系。那么请问,在什么情况下适合先取得一个connection~再从中得到N个statement呢?问这个问题的直接起因:我在公司里学习的过程中~指导我的程序员给我了一个接口~让我从连接池中取得一个connection~然后再对其中的数据进行处理~我写的方法是把从pool中取得connection做为一个类~把从connection中取得statement做为另一个类~然后在其它类中进行调用~但指导我的程序员说~没必要~直接把这两个类写成一个类就好了~我想~这不就成了一个connection只对应一个statement?那connection和statement对应关系1:N又有什么用呢?

解决方案 »

  1.   

    不是啊!!
    首先从连接池中获得连接,获取的这个连接就有可能是你原来用过的connection
    举个最简单的例子,你不用连接池,之间创建一个连接,用完后不把它释放掉,但你下次在用的时候就是你原来的这个了
    当然实际中是没有这么弄的
      

  2.   

    在什么情况下适合先取得一个connection~再从中得到N个statement呢? 
    这个就像我刚才举的例子。
    connection只对应一个statement?
    没有,获取的这个连接就有可能是你原来用过的connection 
    那connection和statement对应关系1:N又有什么用呢?
    连接数据库是很浪费时间的,你每当去用连接时都想去创建个新的,这样的执行效率是很低的
      

  3.   

    我有点理解楼主意思。“那么请问,在什么情况下适合先取得一个connection~再从中得到N个statement呢?”
    一个业务需要事务时可以用到。
      

  4.   

    对3楼:嗯~关键是实际上~对于取得connection后得到的statement~一般在调用完的时候都会直接把connection释放~还给连接池~那么可以把这个connection看成在同一个时间段类~只对应一个statement么?有没有同一个时间段~N个statement对应一个connection的?
      

  5.   

    我想,写成一个类与一个connection多个statement并不矛盾,在一个事务中肯定是一个connection多个statement。
      

  6.   


    嗯~关键是实际上~对于取得connection后得到的statement~一般在调用完的时候都会直接把connection释放~还给连接池~那么可以把这个connection看成在同一个时间段类~只对应一个statement么?
    可能性微乎其微,你不用并不代表别人不用,别人用到时可能获取到你刚才所释放的连接