spring配置文件:<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource">
            <ref local="dataSource" />
        </property>
</bean>
<bean id="baseJdbcDAO" class="core.db.dao.impl.BaseJdbcDAO">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>   
</bean>
然后通过类BaseJdbcDAO获得ConnectionConnection conn = baseJdbcDAO.getSqlConn();
请问获得的这个Connection对象conn需要手工关闭吗?(conn.close();)

解决方案 »

  1.   

    不知道,楼主你用了jdbcTemplate模板了,干吗还要用Connection呢?
    jdbcTemplate已经能解决几乎所有的增删改查问题的了。
    如果非要这样用Connection,那最好还是要关闭一下吧。
      

  2.   

    顶三楼、你已经交给spring来管理了,干嘛自己还调用
      

  3.   

    既然手动创建session 当然要把它关闭掉了建议通过jdbeTemplate().get insert等等方法来实现操作
      

  4.   

    可以的  getHibernateTemplate().execute(new HibernateCallBach(){.........})
    重写方法,里面即有sesion  不用关闭,他是在spring管理范围
      

  5.   

    Connection conn = baseJdbcDAO.getSqlConn();
    这种方式获得的connection,Spring已经管不了了,因为不是它的IOC来create的实例,需要手动关闭
      

  6.   

    我现在有个老的代码要复用,所以要获得ConnectiongetHibernateTemplate().execute(new HibernateCallBach(){.........})
    重写方法,里面即有sesion 不用关闭,他是在spring管理范围hibernate的我也知道他不用关闭,但是我现在是spring的jdbc,和hibernate没关系,我是这么认为的我自己手工测试了一下,我的数据源里配了默认是5个连接数,我一次性插入10条数据,我通过数据库查询还是5条,貌似spring已经管理了这个connection,但我不是很确定
    public class BaseJdbcDAO  extends JdbcDaoSupport implements IBaseJdbcDAO { private static final Log logger = LogFactory.getLog(BaseJdbcDAO.class);

    public Connection getSqlConn()
    {
    return this.getConnection();
            }因为不是它的IOC来create的实例???上面的Connection应该是从ioc总获取的吧?