关于数据库连关闭问题

xql80329 2009-03-27 10:57:34
经常见到一些 框架中对于数据库的关闭
类似
写个 接口 也没实现和继承任何类
public interface DBConnection{

。。。


public void dbClose();

}

在后面的类中涉及到关闭 直接调用dbClose();就可以关闭?
有点怀疑!
请问大虾们怎么理解呢?
...全文
103 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengsky491 2009-03-28
  • 打赏
  • 举报
回复
如果有用spring,看看有没有什么地方注入了DBConnection的实现类,还有看看你的BaseDaoHibImpl。
fenglingcompany 2009-03-28
  • 打赏
  • 举报
回复
threadLocal.get(); 返回的应该是DBConnection的具体实现类
那个里面会实现dbClose()
winnernoom 2009-03-28
  • 打赏
  • 举报
回复
要看这个接口怎么实现的啊
后海 2009-03-28
  • 打赏
  • 举报
回复

它是把数据库连接及关闭的相应方法抽象成接口,

然后让别的数据库操作Dao类来实现它,以此来做到面向接口编程 !

但是我不建议用这种方法,
对于数据库连接及关闭,最好只写一次,而多次利用。那应该用什么方式呢 ?我建议写一个类实现数据库连接及关闭方法。然后让其他数据库操作Dao类继承他,这样的话就像使用自己的方法一样简单。如需改变,只需要改父类。

很方便 !当然还有更方便的, 那就是使用 Hibernate 用配置文件来管理数据库连接 .....
xql80329 2009-03-27
  • 打赏
  • 举报
回复
是有个类实现了DBConnection。
但是我还是不清楚
包含下面这个方法的类并没有继承实现类
DBConnection dbConn=(DBConnection)threadLocal.get();

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

threadLocal.set(dbConn);
}
sjkof 2009-03-27
  • 打赏
  • 举报
回复
threadLocal.get(); 返回的应该是DBConnection的具体实现类
那个里面会实现dbClose()
xql80329 2009-03-27
  • 打赏
  • 举报
回复
public DBConnection getDBConn()
{
return getDBConn(true);
}
xql80329 2009-03-27
  • 打赏
  • 举报
回复
DBConnection dbConn=(DBConnection)threadLocal.get();

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

threadLocal.set(dbConn);
}
fengsky491 2009-03-27
  • 打赏
  • 举报
回复
也没实现和继承任何类?
那你是怎么连上DB的?怀疑中.....
xql80329 2009-03-27
  • 打赏
  • 举报
回复
我基本了相关的一些代码了

主要还上上面几楼说的 那个线程就是得到了它的实现类所以
就没有必要继承了
luojihaidao 2009-03-27
  • 打赏
  • 举报
回复
应该了解一下接口!
sjkof 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xql80329 的回复:]
是有个类实现了DBConnection。
但是我还是不清楚
包含下面这个方法的类并没有继承实现类
DBConnection dbConn=(DBConnection)threadLocal.get();

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

threadLocal.set(dbConn);
}

[/Quote]

为什么要继承呢?
他是持有了一个引用,这个引用指向DBConnection的一个具体实现类
我们操作dbClose()是对dbConn调用的
Johnson_Hong 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xql80329 的回复:]
是有个类实现了DBConnection。
但是我还是不清楚
包含下面这个方法的类并没有继承实现类
DBConnection dbConn=(DBConnection)threadLocal.get();

//如果当前线程中不存在数据库链接,则新建一个
if(dbConn == null)
{
//实例化JDBC数据链接程序
dbConn = DBConnFactory.getDB(commit, "BaseDaoHibImpl.class",
th…
[/Quote]
这个类持有一个dbconnection的实例,然后通过这个实例来完成dbconnection的功能而已,为什么一定要继承呢?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧