单例模式获取mysql连接_大家来讨论下单例模式, JDBC 和数据库连接池

我最近在学习 Java Web ,复习到 JDBC 这一块了。

项目里有一个 DBManager 的类,里面使用单例模式提供了一个获取数据库连接和关闭数据库连接的方法。

一直想不明白,为什么要使用单例模式?如果项目的全局范围中,只有一个数据库连接可用,那么当多个操作需要同时访问数据库该怎么办?

使用单例模式的情况下,如果两个用户同时登录,那么两个用户各需要一条数据库连接,但数据库连接只有一条。在单例模式的代码块中两个线程同时返回同一条数据库连接,这样不是违背常理了?项目中也没有实现类似队列的功能,并发的情况下多个数据操作共用一条数据库连接也可以?

数据库连接池能解决上面这个问题,但依然感觉有瓶颈。例如设置连接池最大开启 10 条连接。在并发的情况下,允许十个用户同时操作数据库。在连接不被释放的情况下,第十一个用户依然需要等待,一直要等到前面十个用户之一把数据处理完,让连接释放出来,这样连接池中才有空闲的链接。

还有,我使用 Hibernate 的时候,发现 Hibernate 把数据库里面的内容映射成了实体类。书上用 JDBC 操作数据库的时候也会把数据库的内容封装为 JavaBean 。我觉得不用 JavaBean 也可以啊,直接封装到 List>里面也行。 ORM 的好处难道仅仅是为了操作方便?

之前学习是带着能做项目的目的去学习的,现在复习起来开始深究,,发现自己好多地方想不通。还望各位前辈指点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值