2012-09-05 19 views
0

我必须创建一个连接到MySQL DB的Web应用程序。 我想知道如何处理我的DAO中的连接对象。如何处理我的DAO中的连接对象(Java EE)

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

我有点困扰DAO模式,并使用静态单例。因为它是一个网络应用程序,我会永久连接到数据库。我觉得保持这种连接并在所有用户会话之间共享是不太好的。

另一方面,我不太确定每次需要访问Db时获取连接并关闭它都是一个更好的主意。

一种比另一种好吗?我忘记了什么可能会更好?

回答

1

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

+0

我有一个数据源,但它由一个公司框架管理,我没有它的来源,所以我不知道他们如何管理池(如果他们这样做)。我曾尝试反编译相关类,但我没有找到任何池化机制。 – Antoine

+0

好吧,如果他们已经实现了一个DataSource,在大多数情况下他们已经正确地处理了。而且,你说这是一个Web应用程序,我敢打赌它部署在一个webapp容器中。通常情况下,数据源实际上是在您不需要担心的容器中进行管理的。我会建议试试我建议的常规方法,并写一点POC以确保它正常工作。 –

+0

甚至事实证明,你发现数据源的实现不处理连接池,它仍然很好。首先它不影响功能,其次,我认为你可以找到一些数据源库来装饰你现有的数据源并提供连接池功能(我认为bonecp提供了这样的功能) –