【问题标题】:What is the best way to convert relational to object oriented?将关系转换为面向对象的最佳方法是什么?
【发布时间】:2011-02-09 20:23:59
【问题描述】:

自从我了解了 RDBMS,我开始考虑关系模型,而较少考虑面向对象。现在我在尝试在 Java 数据结构中存储和查询数据时遇到了麻烦。

我想编写一个具有相互关联的实体集的应用程序,因此我为每个实体创建了自己的类。每个实体的属性都是实例变量。好吧,我认为到目前为止我们还不错。 TitleGame 都是实体。 Game ISA Title 所以Title 应该是父类,Game 应该继承自 Title(将 Game 视为物理副本,将 Title 视为游戏的名称)。

我的主类中有一组游戏,如果我想找到一个特定的游戏,我可以迭代。我将如何找到特定的标题?我没有一组标题,因为 Title 是继承的,所以我假设我应该只迭代游戏,当我找到一个标题的名称时,将它添加到一个集合中,这样我只会得到唯一的标题。

游戏是可变的(isBought 可以改变)所以使用 Set 是个坏主意吗?在 Java 中创建实体集的最佳方法是什么?使用 Map 而不是 set 将 id 映射到对象?

【问题讨论】:

    标签: java oop relational


    【解决方案1】:

    修复对象-关系差距并非易事。有 ORM(对象关系映射)框架可以做到这一点。但他们有一些学习曲线。 HibernateEclipseLink 是 Java 中 ORM 标准的两个实现 - JPA(Java 持久性 API)。

    【讨论】:

    • 我在其他相关问题中看到了这些,但我不想用软件转换任何东西。我只需要转换我的想法。我想错了,想看看其他人会如何解决这个问题。
    • @styfle ORM 的概念将帮助您映射两者(RDBMS、OOP)。
    • @styfle,这两个想法在您的脑海中协同工作的问题对其他人来说已经足够麻烦了,它有一个术语“阻抗不匹配”,ORM 工具解决了这个问题,允许您在 java 中使用数据库一种非常自然的方式。
    【解决方案2】:

    关系模型和 OO 模型之间没有根本的差距。关系数据模型是一个类型系统,它支持关系类型和关系运算符(以及其他类型)。 OO 数据模型是一种支持继承的类型系统。

    人们在考虑这些范式时经常犯的错误是将 OO 术语中的类型(类)等同于关系模型中的关系或元组。 Date 和 Darwen 将此称为First Great Blunder。现实远比这简单得多。在关系模型和 OO 模型中,类型都是类型。这两种范式相互正交,相互补充,并不相互排斥。

    大肆宣传的 OO/RM 不匹配实际上意味着程序员希望实现其软件工具不容易支持的某些转换模式。关系模型不应受到指责。软件制造商是。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多