2010-01-19 59 views
0

我正在开发一个使用MySQL数据库的Java桌面应用程序。该数据库有6个表格。像往常一样,每张表都应该允许CRUD(创建,读取,更新和删除)操作。如何有效地实现数据库功能?

我为每个表设计了6 * 4 = 24个JPanels,4个JPanels。每个JPanel都有组件来接受用户输入并执行它所设计的CRUD操作。例如,JPanel3被设计用于Table1的创建操作。

现在我想了解以下内容:

Q1。写24个函数会更好吗,每个函数都为特定的表执行特定的函数? Q230。

Q2。这种情况非常正常,因为每个应用程序一般都有很多表格。那么,所有这些应用程序是否都使用这种方法为每个表的每个操作编写每个函数?

Q3。因为它是一个Swing应用程序,并且每个CRUD操作都需要数据库连接,所以当用户启动应用程序时连接数据库会更好吗?

它会更好,使当时的数据库连接时,用户点击“保存”或“编辑”或“删除”或“创建”按钮?

Q4。从所有24个函数共享的实例变量中引用连接会更好吗?或者每个功能都有自己的连接会更好吗?

欢迎任何其他建议。

回答

3

A1。否。设计应该以需求和领域逻辑为指导,而不是技术考虑。通常,对于每个表格,用户都可以单独访问所有的CRUD操作是没有意义的。编写函数一起执行那些一起执行的操作。

A2。现在,大多数应用程序都使用对象/关系映射器,如Hibernate来处理这种事情。但是,仍然应该有顶层的应用程序逻辑,它们一起执行相关的操作。

A3/4。使用DB connection pool。 O/R映射器通常会自动执行此操作。

+0

+1为了向我介绍数据库连接池的概念 – 2010-01-19 15:44:59

0

该应用程序做什么?

我希望你的对象使用比“JPanel3”和“Table1”更多的描述性名称?

1

如果您可以与经验丰富的人一起参与项目,那将会很棒。你的问题是可以理解的,但是......大多数项目已经有解决方案。

我相信还有很多比你所描述的那些更多的问题,你可以几个月工作只是为了发现问题 ;-)

有这么多的建议,您可能需要,我们不能甚至开始。

你能考虑一个像Hibernate这样的框架吗? 尽管在学习过程中(和建议)你会学习很多关于数据库层的问题和解决方案。


但是,为了回答大家的一些问题:

Q1:没有,书写24级的功能将是一个很大的重复。 Q2:肯定不是。

Q3:数据库连接通常超时。我建议在适当的时候要求一个,例如你描述的情况。

Q4:获取连接应该是共享代码。

4

请参阅this article关于DAO模式,然后 请参阅Don't repeat the DAO! article,以便制作通用的可重用DAO。

总之 - 在一个类包装您的数据库访问功能和重用来自世界各地的阶级,从而有效地使你的应用程序没有明确依赖于数据库操作 - 只在DAO类(接口)。

+0

+1为您的答案 – 2010-01-19 15:20:16

1

Q1:你能有更少的JPanels和使用的JComboBox来让用户选择至极表进行操作?这可能会为你节省一些代码。 Q2:在某些方面,是的。但请参阅我对Q4的回答。

Q3:你的连接,当用户点击,并留下你需要它打开的时间很短。数据库连接占用资源。

Q4:这将是好得多,如果你做的所有数据库的代码,并在一个类中,称为数据访问对象进行交互,然后是更容易的数据库从MySQL改变,如果你想。见http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/

-1

,如果你写任何代码会更好。 是的!只需拖放即可。 数据验证,报告和图表。 创建一个完整的数据库程序,无需编写一行代码。 常见的东西,如新/编辑/删除/搜索/更新。 使用JDeveloper。