OO程序和SQL数据库(OO program and SQL database)

2019-09-19 13:17发布

当使用SQL数据库后端的编程OO程序,不要对象的属性与表中的行对应? 还是多一点呢? 我不太了解对象的属性如何与数据表。 谢谢你的帮助。

Answer 1:

这真的取决于其ORM你使用,但是,一般的想法是:

class = > table
instance => row
attribute => column


Answer 2:

ennuikiller提到的一些事情,但对象也可以多行和表存储了,因为有可能是否定的,因为数据是如何建模和归一化相关。

这不是简单的......一些阅读对象关系阻抗失配 (维基百科)



Answer 3:

阅读一些关于对象relational_mapping

一种编程技术为在关系数据库和面向对象的编程语言不兼容的类型的系统之间的数据转换。 这造成的,实际上,可以从编程语言中使用的“虚拟对象数据库”。 有迹象表明,执行对象 - 关系映射提供免费的和商业的包装,虽然有些程序员选择创建自己的ORM工具。

对于Java.NET的休眠项目提供关系持久性。

Hibernate是一个强大的,高性能的对象/关系持久性和查询服务。 Hibernate允许你开发以下面向对象的成语持久性类 - 包括关联,继承,多态,组合和集合。 休眠可以让你表达自己的便携式SQL扩展(HQL)查询,以及在本地SQL,或用面向对象的标准和示例API。

与许多其他持久性解决方案,Hibernate不隐藏你和保证SQL的力量,你在关系型技术和知识投入是一如既往为有效。



Answer 4:

我的答案是否定的。

OO设计的目标是优化便于指定程序的行为。 数据库设计的目标是优化为便于数据存储/检索。 这些目标是非常不同的,能够而且将会导致问题域的完全不同的分解。

这是可能的一个映射到另一个,但随后你会遇到的阻抗失配,如其他人所说的,这是基本的两种模式的不同目标的技术后果。

约尔格提到的“ 计算机科学的越南在评论”的文章,这是值得一读。 您可以跳过对越南历史的东西,如果你在很短的时间。



Answer 5:

你需要更具体,可能做的研究什么是可用您选择的平台上一点点。 虽然有各种映射面向对象语言到数据库的方式,不存在“一刀切”的做法。



文章来源: OO program and SQL database
标签: sql oop