何时使用Java/Tomcat建立数据库连接

何时使用Java/Tomcat建立数据库连接,java,tomcat,Java,Tomcat,一般来说,我对Java相当陌生,并且已经开始与Tomcat合作开发web应用程序。我很快注意到的一件事是,我的Servlet类被实例化一次,然后在将来的请求中重用。我发现这一点是因为我在构造函数中创建了数据库连接,但在Http方法本身中关闭了它。但这不起作用;第二个请求失败,因为连接已关闭 果然,在构造函数中设置时间戳并在Http方法中转储它会在将来的请求中显示与第一个请求相同的时间戳 所以现在我想知道我是否应该在构造函数中建立数据库连接并允许该连接在将来的请求中保持,还是应该为每个请求建立一个

一般来说,我对Java相当陌生,并且已经开始与Tomcat合作开发web应用程序。我很快注意到的一件事是,我的Servlet类被实例化一次,然后在将来的请求中重用。我发现这一点是因为我在构造函数中创建了数据库连接,但在Http方法本身中关闭了它。但这不起作用;第二个请求失败,因为连接已关闭

果然,在构造函数中设置时间戳并在Http方法中转储它会在将来的请求中显示与第一个请求相同的时间戳

所以现在我想知道我是否应该在构造函数中建立数据库连接并允许该连接在将来的请求中保持,还是应该为每个请求建立一个新的连接

在构造函数中建立连接的明显优点是,它可以避免以后需要额外的连接,但当然,明显的缺点是,即使在可能不需要连接的情况下,连接仍然保持打开状态

在这个决定中还有哪些我可能没有考虑的因素?做这件事的“标准”方法是什么


提前谢谢

为每个请求打开一个连接,但使用,这样关闭连接实际上不会关闭它,而是将它放回可用的、打开的连接池中


请注意,当您在构造函数中打开连接时,最重要的问题不是它一直处于打开状态。主要问题是,处理两个独立客户端的两个请求的两个线程将使用相同的连接,从而相互弄乱:第一个线程中的异常将回滚第一个线程所做的更改。在一个线程中提交将提交在另一个线程中完成的部分更改。这是您必须绝对避免的。

谢谢您的回复!我现在正在经历建立连接池的过程。是的,我完全明白你在线程之间共享资源的观点,这是我没有想到的!