经常见到一些  框架中对于数据库的关闭
类似
写个 接口  也没实现和继承任何类
public interface DBConnection{
 public void dbClose();} 在后面的类中涉及到关闭  直接调用dbClose();就可以关闭?
有点怀疑!
请问大虾们怎么理解呢?

解决方案 »

  1.   

      DBConnection dbConn=(DBConnection)threadLocal.get();
              
              //如果当前线程中不存在数据库链接,则新建一个
              if(dbConn == null)
              {
                  //实例化JDBC数据链接程序
                  dbConn = DBConnFactory.getDB(commit, "BaseDaoHibImpl.class",
                      this.getHibernateTemplate().getSessionFactory());
                  
                  threadLocal.set(dbConn);
              }
                  
      

  2.   

     public DBConnection getDBConn()
      {
          return getDBConn(true);
      }
      

  3.   

    threadLocal.get(); 返回的应该是DBConnection的具体实现类
    那个里面会实现dbClose()
      

  4.   

    是有个类实现了DBConnection。
    但是我还是不清楚
    包含下面这个方法的类并没有继承实现类
      DBConnection dbConn=(DBConnection)threadLocal.get(); 
              
              //如果当前线程中不存在数据库链接,则新建一个 
              if(dbConn == null) 
              { 
                  //实例化JDBC数据链接程序 
                  dbConn = DBConnFactory.getDB(commit, "BaseDaoHibImpl.class", 
                      this.getHibernateTemplate().getSessionFactory()); 
                  
                  threadLocal.set(dbConn); 
              } 
                  
      

  5.   

    这个类持有一个dbconnection的实例,然后通过这个实例来完成dbconnection的功能而已,为什么一定要继承呢?
      

  6.   


    为什么要继承呢?
    他是持有了一个引用,这个引用指向DBConnection的一个具体实现类
    我们操作dbClose()是对dbConn调用的
      

  7.   

    threadLocal.get(); 返回的应该是DBConnection的具体实现类 
    那个里面会实现dbClose()
      

  8.   

    如果有用spring,看看有没有什么地方注入了DBConnection的实现类,还有看看你的BaseDaoHibImpl。
      

  9.   


    它是把数据库连接及关闭的相应方法抽象成接口,然后让别的数据库操作Dao类来实现它,以此来做到面向接口编程 !但是我不建议用这种方法,
    对于数据库连接及关闭,最好只写一次,而多次利用。那应该用什么方式呢 ?我建议写一个类实现数据库连接及关闭方法。然后让其他数据库操作Dao类继承他,这样的话就像使用自己的方法一样简单。如需改变,只需要改父类。很方便 !当然还有更方便的, 那就是使用 Hibernate 用配置文件来管理数据库连接 .....