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

关系数据库管理系统与对象数据库

  •  3
  • CVertex  · 技术社区  · 16 年前

    我是一所大学的研究助理。我们正在重新调整我们的软件架构课程,希望“现代化”,并解决我们在过去几个学期中发现的一些教学和协作学习问题。

    为了坚持,我们指导学生们学习HSqlDb。

    上学期我们收到了重要的反馈,写数据访问层和映射到OO已经花了很长时间。这项管道工程可以更好地用于更相关的事情,如缩放、端到端性能或满足更多场景。

    在现实世界的制作中,我会选择一种ORM技术,比如Hibernate,但是这个主题已经太复杂了,无法教授另一种技术(Hibernate对于IMHO的学生来说是一个巨大的学习对象)。

    • 我们应该考虑给学生一个面向对象的数据库(如果它们仍然存在)?这节省了ORM和管道的时间
    • 我们是否应该坚持使用关系数据库管理系统,并告诉学生们推出他们自己的ORM?

    记住,这不是真实的世界,但我们希望尽可能多地教授真实世界的技能。教ORM不如让学生快速原型化一个满足场景的系统那么重要。

    5 回复  |  直到 9 年前
        1
  •  5
  •   Adam Robinson    16 年前

    我完全不同意在教育环境中使用ORM。在运行之前,您需要能够行走,并且使用ORM消除了学习过程中有关在应用程序中使用关系数据库的一个非常重要的步骤。您应该坚持使用一个非常轻量级的数据访问框架——它要求学生编写自己的SQL,并且(最多)不允许将此范围的代码绑定到UI,或者(至少)不需要它。

    无可否认,我对Java世界并不熟悉,因为它与实际的企业开发有关,但我意识到(有些不情愿地)这是教育系统中的环境。虽然我认为学生们应该接触.NET,但这是另一次的争论;)在任何情况下,我都很确定有某种框架可以满足这一点。

    我敢打赌,有一些东西提供了一些代码生成功能。在我以前的工作中,我们只使用.NET数据库库来(相对地)从数据库中低级读取数据。我们没有使用任何存储库或更改跟踪技术,而是使用了自己的技术。SQL命令是手工编写的,但是框架仍然提供类型安全和丰富的设计器支持。我的观点是两者都有可能。我建议在Java中找到类似的东西,要求学生手工编写其中一个或两个适配器的代码,以了解其中的内容,然后让代码生成器根据它们的SQL语句执行另一个“gruntwork”管道。

        2
  •  3
  •   Dan Breslau    16 年前

    作为一个欣然接受OO,而RDBMS却不情愿的人。。。我鼓励,甚至恳求,计算机科学部门保持关系数据库理论和实践的前景。如果即使在使用ORM作为OO类时也能做到这一点,那么就去做吧。但我更愿意看到大学毕业的学生理解面向对象关系映射 很难,而且 这很难,而且这并不意味着关系模型已经损坏。



    非常 不管怎样,坏了。

        3
  •  1
  •   Rex M    16 年前

    关于提供一个像Hibernate这样的ORM,我并不认为它对学生来说是一个巨大的学习空间。关于Hibernate最好的事情之一是它的难度与你对它的深入研究程度有很好的相关性。它有一个非常低的进入门槛(不到一天,我的国际海事组织)开始与基本的滚动,通常基本的是你所需要的一切-特别是像一个原型,这是你所说的是这个活动的目标。当然,它不需要学习到这样的程度,它将坚持与学生超出课程范围。基本的冬眠使用可以是一个一次性技能。

    总之,我建议坚持使用RDBMS,并提供类似于Hibernate的ORM。

        4
  •  1
  •   Alex Yakunin    15 年前

    看一看 DataObjects.Net -is共享OR/M框架和对象数据库(如果使用内置存储提供程序)的好处,允许在受支持的存储之间透明地迁移。

    从体系结构和扩展的角度来看,它是相当先进的:例如。 this post 关于它的查询优化技术。

        5
  •  0
  •   jeremyalan    16 年前

    我认为这在很大程度上取决于学生们进入这门课所知道的东西。我之所以这么说,可能是因为最好从他们都熟悉的东西开始,然后再往前走。根据我的经验,大多数学生都了解什么是对象以及如何使用它们,因此将SQL表表示为对象似乎是一个很好的开始。

    如果到目前为止你同意我的观点,那么你可能也同意ORM是一个将年轻程序员从面向对象编程的舒适区过渡到数据库编程的新世界的好方法。

    概念 数据库编程,而不用花太多时间讨论 是的。然后,一旦他们掌握了这些概念,您就可以回滚并向他们展示如何在OOP之外执行类似的实现(使用SQL、PHP、JSP等)

    祝你好运!