2011-10-22 13 views
0

我在写一个适度复杂的Java桌面应用程序,包括一个嵌入式数据库。为什么在应用程序建立到数据库的连接之后,我没有看到任何原因,为什么它应该关闭连接,直到应用程序关闭。适用于中等复杂度的Java桌面应用程序;应该JavaDB连接是静态的吗?

实际上,所有与数据库有关的操作都需要连接;事务可以在连接中开始和连续完成,应用程序不会做任何与数据库非常复杂的事情。

是否有任何理由不应该创建连接并将其引用到数据库特定类已知和使用的类中的静态变量中?这将节省连接必须在各种方法中传递,而不会改变价值。

是否有我在某处失踪的设计级考虑因素?

RC

+0

除了可维护性的问题,有一件事是大多数数据库连接不是线程安全的,这可能会限制您的设计稍后.. – Voo

回答

1

三个月下来的道路,你会希望能够同时连接到两个数据库 - 也许你正在做一些进口/出口工作,或升级作业,或将两个客户合并在一起。然后你会想要其中两个。现在突然间,每个人都使用的静态字段是一场噩梦。

您可以查看IoC容器,如GuiceSpring,以确保您可以跟踪“单身”对象而不滥用静态字段来强制执行其“单身”。

2

我会建议使用库,如c3p0dbcp它为您处理连接池。如果需要,它可以让您灵活地扩展您的应用程序。

任何东西static通常会使其难以编写适当的测试个案例,因为您永远不知道静态资源是否已被更改。

+0

我想说这也是要走的路。至少这就是我在Hibernate所做的桌面应用程序中所做的。 C3PO为您管理一切,因此您甚至不必考虑如何处理数据库连接。 – sbrattla

0

避免静态。用这种变量考虑并发和多线程问题。好的一点是处理与数据库池的连接。春天是你的朋友,达到一个简单而漂亮的配置

+0

春天是一种沉重的依赖性,引入一个小应用程序只是为了连接池。 –

0

我看不出有任何理由,应用程序建立到 数据库,为什么要关闭,直到应用程序的连接的连接后,将要关闭。

这对我来说似乎完全没问题。这是一个嵌入式数据库;它在您的应用程序的服务 。开始时创建连接,只要你需要使用它,当你的应用程序关闭时关闭它。

相关问题