我是一所大学的研究助理。我们正在重新调整我们的软件架构课程,希望“现代化”,并解决我们在过去几个学期中发现的一些教学和协作学习问题。
要求学生使用eclipse快速构建他们的体系结构原型。
为了坚持,我们指导学生们学习hsqldb。
上学期我们收到了重要的反馈,写数据访问层和映射到oo已经花了很长时间。这项管道工程可以更好地用于更相关的事情,如缩放、端到端性能或满足更多场景。
在现实世界的制作中,我会选择一种orm技术,比如hibernate,但是这个主题已经太复杂了,无法教授另一种技术(hibernate对于imho的学生来说是一个巨大的学习对象)。
所以,我向SO社区提出的问题是:
我们应该考虑给学生一个面向对象的数据库(如果它们仍然存在)?这节省了orm和管道的时间
我们是否应该坚持使用关系数据库管理系统,并告诉学生们推出他们自己的orm?
我们应该给学生们指出一个轻量级的、简单的orm吗?
记住,这不是真实的世界,但我们希望尽可能多地教授真实世界的技能。教orm不如让学生快速原型化一个满足场景的系统那么重要。
我本质上是一个C开发人员,但学生们只有在学习Java时才熟悉它。

最佳答案

我完全不同意在教育环境中使用orm。在运行之前,您需要能够行走,并且使用orm消除了学习过程中有关在应用程序中使用关系数据库的一个非常重要的步骤。您应该坚持使用一个非常轻量级的数据访问框架——它要求学生编写自己的SQL,并且(最多)不允许将此范围的代码绑定到UI,或者(至少)不需要它。
无可否认,我对Java世界并不熟悉,因为它与实际的企业开发有关,但我意识到(有些不情愿地)这是教育系统中的环境。虽然我认为学生们应该接触.net,但这是另一次的争论;)在任何情况下,我都很确定有某种框架可以满足这一点。
我敢打赌,有一些东西提供了一些代码生成功能。在我以前的工作中,我们只使用.NET数据库库来(相对地)从数据库中低级读取数据。我们没有使用任何存储库或更改跟踪技术,而是使用了自己的技术。sql命令是手工编写的,但是框架仍然提供类型安全和丰富的设计器支持。我的观点是两者都有可能。我建议在java中找到类似的东西,要求学生手工编写其中一个或两个适配器的代码,以了解其中的内容,然后让代码生成器根据它们的sql语句执行另一个“gruntwork”管道。
不要使用任何sql生成。在让计算机为您编写SQL之前,您必须能够编写它。第二个你使用orm做一些你不知道如何在sql中做的事情,是第二个你已经失去了对数据库模型的控制,他们需要理解这一点。

关于database - 关系数据库管理系统与对象数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/780255/

10-09 02:06
查看更多