我最近在学习 Java Web ,复习到 JDBC 这一块了。
项目里有一个 DBManager 的类,里面使用单例模式提供了一个获取数据库连接和关闭数据库连接的方法。
一直想不明白,为什么要使用单例模式?如果项目的全局范围中,只有一个数据库连接可用,那么当多个操作需要同时访问数据库该怎么办?
使用单例模式的情况下,如果两个用户同时登录,那么两个用户各需要一条数据库连接,但数据库连接只有一条。在单例模式的代码块中两个线程同时返回同一条数据库连接,这样不是违背常理了?项目中也没有实现类似队列的功能,并发的情况下多个数据操作共用一条数据库连接也可以?
数据库连接池能解决上面这个问题,但依然感觉有瓶颈。例如设置连接池最大开启 10 条连接。在并发的情况下,允许十个用户同时操作数据库。在连接不被释放的情况下,第十一个用户依然需要等待,一直要等到前面十个用户之一把数据处理完,让连接释放出来,这样连接池中才有空闲的链接。
还有,我使用 Hibernate 的时候,发现 Hibernate 把数据库里面的内容映射成了实体类。书上用 JDBC 操作数据库的时候也会把数据库的内容封装为 JavaBean 。我觉得不用 JavaBean 也可以啊,直接封装到 List<Map<String,Object>>里面也行。 ORM 的好处难道仅仅是为了操作方便?
之前学习是带着能做项目的目的去学习的,现在复习起来开始深究,,发现自己好多地方想不通。还望各位前辈指点。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.