我正在开发一个使用MySQL数据库的Java桌面应用程序。 DB有6个表。像往常一样,每个表都应该允许CRUD(创建,读取,更新和删除)操作。
我为每张桌子设计了6 * 4 = 24个JPanels,4个JPanels。每个JPanel都有组件来获取用户输入并执行其设计的CRUD操作。例如,JPanel3设计用于Table1的Create操作。
现在我想了解以下内容:
Q1。编写24个函数会更好吗,每个函数都为特定的表执行特定的功能?
Q2。这种情况非常正常,因为每个应用程序通常都有很多表。那么,所有这些应用程序是否都使用这种方法为每个表的每个操作编写每个函数?
Q3。因为它是一个Swing应用程序,每个CRUD操作都需要数据库连接,所以在用户启动应用程序时建立与数据库的连接会更好吗?
或
当用户点击“保存”或“编辑”或“删除”或“创建”按钮时,建立数据库连接会更好吗?
Q4。从所有24个函数共享的实例变量中引用连接会更好吗?或者让每个函数都有自己的连接会更好吗?
欢迎任何其他建议。
答案 0 :(得分:4)
有关DAO模式的信息,请参阅this article,然后 请参阅Don't repeat the DAO! article,以便制作通用的,可重复使用的DAO。
简而言之 - 将数据库访问功能包装在一个类中,并从任何地方重用该类,从而有效地使您的应用程序不显式依赖于数据库操作 - 仅在DAO类(接口)上。
答案 1 :(得分:3)
A1。否。设计应遵循要求和域逻辑,而不是技术考虑因素。通常,对于每个表,用户可以单独访问所有CRUD操作没有意义。编写函数以一起执行这些操作。
A2。否。现在,大多数应用程序都使用像Hibernate这样的对象/关系映射器。但是,仍然应该在顶部应用逻辑来执行相关操作。
A3 / 4。使用DB connection pool。 O / R映射器通常会自动执行此操作。
答案 2 :(得分:1)
如果你能加入一个有经验的人的项目,那将是很棒的。你的问题是可以理解的,但......大多数项目已经有了解决方案。
我认为问题比你描述的问题多得多,你可以工作几个月只是为了发现问题; - )
您可能需要的建议太多,我们甚至无法启动。
你能考虑一个像Hibernate这样的框架吗? 虽然对于您来说学习起来很复杂,但在过程(和建议)中,您将学到很多关于数据库层问题和解决方案的知识。
但要回答你的一些问题:
Q1:不,编写24个函数会造成大量重复。
Q2:当然不是。
问题3:数据库连接通常会超时。我建议在适当的时候要求......,例如在你描述的情况下。
问题4:获取连接应该是共享代码。
答案 3 :(得分:1)
Q1:你能用更少的JPanel并使用JComboBox让用户选择要操作的表吗?这可能会为你节省一些代码。
Q2:在某种程度上,是的。但请参阅我对Q4的回答。
问题3:用户点击时进行连接,并在需要的时间内将其保持打开状态。数据库连接需要资源。
第四季:如果您执行所有数据库代码并在单个类中进行交互(称为数据访问对象)会更好,那么如果您愿意,可以更轻松地从MySQL更改数据库。见http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/答案 4 :(得分:0)
该应用程序做了什么?
我希望您为对象使用比“JPanel3”和“Table1”更具描述性的名称?
答案 5 :(得分:-1)
如果你不写代码会更好。 是!只需拖放即可。 数据验证,报告和图表。 无需编写任何代码即可创建完整的数据库程序。 常见的事情,如新/编辑/删除/搜索/更新。 使用JDeveloper。