2

我正在构建我的第一个真正的 Java 应用程序,但我对遵循良好的面向对象设计实践感到困惑。

我的应用程序允许瑜伽教练设计瑜伽课程。有一个带有五个表的 MySQL 数据库:

  • 一张瑜伽姿势表,
  • 会议热身部分的表格
  • 会议工作部分的表格
  • 会话恢复部分的表
  • 最后是一张包含用户创建的各种瑜伽课程的表格。

会话由部分组成,部分由姿势组成。为了学习如何将数据库与 Java 集成,我有意选择在此设计中使用数据库而不是列表或数组。

这是我的问题: 真的有必要从姿势、部分和会话中制作对象吗?
它们只是数据,没有任何行为。我的应用程序中的真实对象是用户用来将这些姿势和部分组合成瑜伽课程的窗口和工具。如果我强制每个姿势、部分和会话成为一个对象,我的代码似乎会变得不必要地膨胀和复杂。我意识到我可能会在这里征求意见,这在这个论坛上通常是不鼓励的。但是我的意图是在我看来是一个模糊的领域中理解和遵循面向对象的设计。

4

2 回答 2

3

要回答您的问题,是的,为每个创建对象。面向对象编程的主要原则是拥有不同“类型”的对象并围绕它们做一些事情(行为 - 方法)。

我建议你看一下ORM的概念。ORM 是将对象映射到它们的持久表示(即数据库表)的过程。

如果您使用纯 JDBC,您可能需要编写大量本机 SQL 和代码来从表中提取单个列的值。当架构的复杂性增加时,维护这些查询将变得困难。

使用 ORM,您可以编写简单的 Java 程序来从持久层获取和保存数据。

您可以通过此线程查看 ORM 的优势

Hibernate是一个可用于 Java 的出色框架,它执行 ORM

于 2013-06-25T15:32:16.343 回答
2

1)如果你使用Hibernate或其他ORM,你必须使用POJOs。没有别的办法。

2)如果你直接使用JDBC,例如Spring JDBC,你可以使用maps(SimpleJdbcTemplate在许多函数中返回maps等),但是读取POJO字段比从map读取字段更快,更不容易出错。地图在内存中也占有更多的位置。

3)如果您使用的是JSF,则需要带有 getter 和 setter 的 POJO,map 理论上可以用于只读,但语法变得晦涩难懂。

重新假设,Java 中的 POJO 没有很好的替代方案来存储数据。在某些情况下,您可以使用映射,但仅当数据结构是动态的或作为临时解决方案时才适用。

于 2013-06-25T15:33:17.487 回答