代码之家  ›  专栏  ›  技术社区  ›  Amit

如何有效地实现数据库功能?

  •  0
  • Amit  · 技术社区  · 15 年前

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

    我设计了6*4=24个jpanel,每个表有4个jpanel。每个jpanel都有一些组件来接受用户输入并执行为其设计的CRUD操作。例如,jpane3是为表1的创建操作而设计的。

    现在我想知道以下内容:

    Q1。 最好写24个函数,每个函数为一个特定的表执行一个特定的函数吗?

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

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

    当用户单击“保存”或“编辑”或“删除”或“创建”按钮时,最好建立数据库连接吗?

    第4季度。 最好从一个实例变量引用连接,该实例变量由所有24个函数共享?还是让每个功能都有自己的连接更好?

    其他建议也欢迎。

    6 回复  |  直到 15 年前
        1
  •  3
  •   Michael Borgwardt    15 年前

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

    A2 不需要。现在,大多数应用程序都使用类似的对象/关系映射器 Hibernate 为了这种事情。但是,仍然应该有应用程序逻辑在上面,一起执行相关的操作。

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

        2
  •  4
  •   Bozho    15 年前

    this article 关于刀的图案,然后 见 Don't repeat the DAO! article 这样就可以生成一个通用的、可重用的DAO。

    简而言之,将您的数据库访问功能包装在一个类中,并从任何地方重用该类,从而有效地使您的应用程序不显式地依赖于数据库操作——只依赖于DAO类(接口)。

        3
  •  1
  •   KLE rslite    15 年前

    如果你能和有经验的人一起参加一个项目,那就太好了。你的问题可以理解,但是…大多数项目已经有了解决方案。

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

    你可能需要很多建议,我们甚至都无法开始。

    你能考虑一个像Hibernate这样的框架吗? 虽然学习起来很复杂,但是在这个过程中(以及建议),您会学到很多关于数据库层问题和解决方案的知识。


    但要回答你的一些问题:

    问题1:不,写24个函数会有很多重复。

    问题2:当然不是。

    问题3:数据库连接通常超时。我建议在适当的时候要求一个……,例如在你描述的案例中。

    问题4:获得连接应该是共享代码。

        4
  •  1
  •   Jonas    15 年前

    问题1:你能不能少一些jpanel,用jcombobox让用户选择wich表进行操作?这可能会为您节省一些代码。

    问2:在某种程度上,是的。但请看我第四季度的答案。

    问题3:当用户单击时进行连接,并根据需要将其保持打开状态。数据库连接占用资源。

    问题4:如果你把所有的数据库代码都放在一个称为数据访问对象的类中进行交互,那么如果你愿意的话,从MySQL中更改数据库会更容易一些。见 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javadb/

        5
  •  0
  •   Christoffer Hammarström    15 年前

    应用程序的作用是什么?

    我希望您对对象使用的描述性名称比“jpanel3”和“table1”更多?

        6
  •  -1
  •   land rover    15 年前

    最好不要写代码。 对!只需拖放即可。 数据验证、报告和图表。 创建一个完整的数据库程序,而不需要编写一行代码。 常见事物,如新建/编辑/删除/搜索/更新。 使用jDebug。