我应该如何在JavaWeb服务中设置数据库连接?

我应该如何在JavaWeb服务中设置数据库连接?,java,database,jdbc,Java,Database,Jdbc,我正在为一个大学项目制作一个小型论坛形式的web服务。web服务提供了一系列方法来访问和修改数据库,然后JSP/servlet将使用该web服务向用户展示论坛 我已经设置了所有的方法,但我仍然不确定如何正确设置数据库连接。现在,我在web服务类文件中有一个连接对象,该连接是在类的构造函数中建立的。我在我的所有方法中一直使用该连接对象,因此它们都依赖于正在运行的构造函数。我不确定那是对的 有更好的方法吗?一位讲师告诉我,每当有人访问一个页面时,就会创建一个web服务实例,这对我来说似乎是一个昂贵的

我正在为一个大学项目制作一个小型论坛形式的web服务。web服务提供了一系列方法来访问和修改数据库,然后JSP/servlet将使用该web服务向用户展示论坛

我已经设置了所有的方法,但我仍然不确定如何正确设置数据库连接。现在,我在web服务类文件中有一个
连接
对象,该连接是在类的构造函数中建立的。我在我的所有方法中一直使用该连接对象,因此它们都依赖于正在运行的构造函数。我不确定那是对的

有更好的方法吗?一位讲师告诉我,每当有人访问一个页面时,就会创建一个web服务实例,这对我来说似乎是一个昂贵的操作

编辑:我看了一下连接池和迄今为止我发现的一切(包括这一点需要额外的库。我仅限于在没有额外库的情况下储存Java SE/EE,所以这是不可能的。

这是一个非常糟糕的主意。你不应该有一个共享的
连接
对象。它不能像那样扩展,而且它不是线程安全的

更好的方法是使用连接池。在需要时获取连接,使用它,然后在同一方法的范围内关闭它


我认为你的朋友得到的信息是错误的:web服务应该独立于任何页面。它由容器管理。它可能是单个对象或池对象,但你不能为每个页面创建一个对象。

最好发布一些代码,但是从简要说明中可以想到几个问题:

  • 您没有共享连接,这在任何实际负载下都不会非常有效
  • 创建连接非常昂贵,因此如果您非常频繁地执行构造函数,那么您将创建大量连接
  • 你在哪里关闭连接
  • 确保防止sql注入

  • 您不应该在构造函数中创建连接,因为您很可能会遇到很多不活动、连接状态、io问题等问题

    我宁愿使用来自Apache库的数据源,例如


    然后,在web服务的每个方法中,调用
    dataSource.getConnection()
    获取连接。在内部,它使用一个连接池,正如另一个答案中所建议的那样。

    因此,我应该为每个方法打开一个到数据库的新连接?我认为这将花费更多的时间/资源。不,您可以让连接池打开并管理连接。服务会检查连接,使用连接,然后检查我我很困惑,是否有连接池类或对象或类似的东西?我的课程没有涵盖任何类似的内容。如果你感到困惑,不要担心你在这里提到的所有细节。如果你知道的话,每次都创建一个连接,看看它是如何工作的。当你遇到问题时,找出解决方法做吧。你是一名学生;完成作业,然后扩展到其他事情。如果你自己写的话,这不是不可能的。但你不知道怎么做,因为你的教授还没有完成地图。哦,好吧。
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setUrl("jdbc:...");
    dataSource.setUser(...);
    dataSource.setPassword(...);