首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web App DAL中的JDBC数据库连接

Web App DAL中的JDBC数据库连接
EN

Stack Overflow用户
提问于 2008-09-23 13:22:22
回答 2查看 815关注 0票数 1

我正在构建一个小型网站,以供乐趣/学习使用一个相当标准的Web/服务/数据访问分层设计。

对于数据访问层,处理创建连接对象以调用我的SQL存储过程的最佳方法是什么?为什么?请记住,我正在手工编写大量的代码(我知道我可以使用Hibernate等为我编写大量的代码)。

1)我应该创建一个连接的静态实例并通过它运行所有的查询,还是会导致并发问题?

2)应该为每个数据库调用创建一个连接实例并接受性能开销吗?(如果情况是这样的话,我将在晚些时候研究连接池)

EN

回答 2

Stack Overflow用户

发布于 2008-09-23 13:24:04

每个线程应该使用一个Connection。不要在线程之间共享连接。

考虑使用 Apache DBCP。这是配置数据库连接并从池中提取它们的一种免费的标准方法。这是像Tomcat这样的高性能web服务器使用的方法。

此外,如果您使用的是DBCP,因为它是一个池(read: cached),经常创建/关闭连接几乎没有什么损失。

票数 1
EN

Stack Overflow用户

发布于 2008-09-23 15:17:33

标准的方法是设置一个DataSource。所有的应用服务器都可以通过他们的管理控制台做到这一点。然后,可以通过JNDI名称(例如"jdbc/MyDB")访问池。

实际上,数据源应该是一个连接池(通常是)。它缓存连接,在传递到应用程序之前对它们进行测试,并执行许多其他重要功能。

在你的代码中:

  1. 解析JNDI名称并将其转换为DataSource
  2. 从数据源获取一个连接
  3. 做你的工作
  4. 关闭连接(它返回到这里的池)

您可以自己设置池(使用任意一种免费的池实现),但如果使用应用程序服务器,则实际上没有任何意义。

因为它是一个web应用程序,所以确保在请求之后关闭连接的一个好方法是使用HttpFilter。您可以在web.xml中设置一个。当请求出现时,获取连接,并将其放入ThreadLocal。在请求期间,从ThreadLocal获取连接,但永远不要关闭它。请求之后,在筛选器中,关闭连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/120941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档