我应该在servlet中保持数据库连接打开吗?

时间:2014-01-11 04:22:06

标签: java servlets jdbc database-connection

我正在创建一个简单的博客网站,就像在tomcat上使用java servlet的学习项目一样。

将有两页: 第一页是输入博客主题和文本的表单,使用jdbc将它们插入到mysql数据库中。

第二页是从数据库中提取数据并显示它的页面。

所以我想知道如果不是单独打开和关闭每个页面中的jdbc数据库连接,我应该创建一个单独的类来保持连接打开。

但是,我不想实例化它,也不想让它变得静止。

有办法做到这一点吗?

另外,这是一个好习惯,在服务器运行之前保持数据库连接打开是否安全?

2 个答案:

答案 0 :(得分:3)

  

想一下连接池

连接池为您提供了许多优势,但最重要的是它们解决了

的问题
  1. 建立真正的数据库连接成本很高。连接池总是有一些额外的连接,并为您提供其中一个。
  2. 如果连接失败,连接池将知道如何打开新连接
  3. 非常重要:每个线程都有自己的连接。这意味着线程应该在以下位置处理:在DB级别。 DB非常高效,可以轻松处理并发请求。
  4. 其他东西(比如集中JDBC连接字符串的位置等),但是这里有数百万篇文章,书籍等
  5. The following page on Tomcat's website描述了如何详细连接Tomcat和mySQL。您不想自己动手,已经有太多的数据源池已经在生产环境中进行了调试和尝试。

    使用池的主要问题是,当您调用close时,连接不会终止,而是仅返回池中。因此,确保在try / finally块中关闭资源非常重要。 Look here for a sample

    您在servlet中,因此您应该使用容器提供的连接池。除了获得连接的方式之外,您的JNDI代码将完全正常。据我所知,所有servlet容器都有连接池。

答案 1 :(得分:0)

您应该在Tomcat上安装JDBC数据源(请参阅Tomcat JNDI Datasource HOW-TO)。使用数据源建立JDBC连接,您将拥有池连接。