如何在my DAOs(Java EE)中处理连接对象

如何在my DAOs(Java EE)中处理连接对象,java,database,jakarta-ee,web,connection,Java,Database,Jakarta Ee,Web,Connection,我必须创建一个连接到MySQL数据库的web应用程序。 我想知道应该如何处理DAOs中的连接对象 该应用程序可能会被不同的用户每天使用几次 我对DAO模式和使用静态单例有点困扰。由于它是一个web应用程序,我将永久连接到DB。我觉得保持这种连接并在所有用户会话之间共享并不太好 另一方面,我不太确定每次需要访问数据库时都要连接并关闭它是否真的是一个更好的主意 一种方式比另一种好吗?我忘记了什么更好的方法了吗?通常情况下,您会在容器中设置数据源,对于每个操作,只需从数据源获取连接即可。使用正确的事务

我必须创建一个连接到MySQL数据库的web应用程序。 我想知道应该如何处理DAOs中的连接对象

该应用程序可能会被不同的用户每天使用几次

我对DAO模式和使用静态单例有点困扰。由于它是一个web应用程序,我将永久连接到DB。我觉得保持这种连接并在所有用户会话之间共享并不太好

另一方面,我不太确定每次需要访问数据库时都要连接并关闭它是否真的是一个更好的主意


一种方式比另一种好吗?我忘记了什么更好的方法了吗?

通常情况下,您会在容器中设置数据源,对于每个操作,只需从数据源获取连接即可。使用正确的事务管理器设置,在同一事务下检索的连接应相同。连接池通常在数据源中处理。

我有一个数据源,但它由公司框架管理,我没有数据源,因此我不知道他们如何管理池(如果有)。我尝试过反编译相关类,但没有找到任何池机制。好吧,如果他们实现了数据源,在大多数情况下,他们已经正确地处理了。而且,你说它是一个web应用程序,我打赌它部署在一个webapp容器中。通常情况下,数据源实际上是在这样的容器中进行管理的,您实际上不需要担心。我建议您尝试一下我建议的正常方法,并编写一点POC以确保其正常工作。即使您发现数据源实现没有处理连接池,它仍然可以正常工作。首先,它不会影响功能,其次,我认为您可以找到一些数据源库来装饰您现有的数据源,并提供连接池功能(我认为bonecp提供了这样的功能)实际上,数据源不是由webapp容器管理的,而是由这个公司框架和配置文件管理的:据我所知,没有JNDI或任何其他注册表来处理这个问题。不管怎样,我会检查你的建议,看看我是否可以使用lib来管理它,bonecp或者C3PO,我已经在hibernate上使用了好几次了,只要你能得到数据源的引用,就可以了。许多应用程序仍然使用自管理数据源:)