1
4
当您从数据库的角度接近应用程序时,像Doctrine2(PHP)或Hibernate(Java)这样的“派生”应用程序是不合适的。如果你想反过来(即“我有一个面向对象的域模型,需要将它持久化在一个关系数据库中”,而不是“我有一个关系数据库,想要一个(生成的?)”,那么这些更适合面向对象的接口,而不会在数据库方面做出任何妥协)。如果你使用它们,尽管在方法上有着如此重要的差异,而且你更喜欢你的关系模式而不是你的对象模型,你只会感到沮丧。
也许可以试试Propel或RedBeanPHP,它似乎适合于数据库驱动的开发模型,几乎没有映射,只是简单地生成(通常是哑的)“数据对象”,也没有太多抽象。外键字段只是直接放在这些解决方案中的对象中,所以它们可能“支持”您想要的所有组合内容。 像Doctrine2或Hibernate这样的解决方案不鼓励使用组合键,因此只在一定程度上支持它们(Hibernate做得很好,但是不建议使用它们)。 就我个人而言,我不喜欢组合键(除了没有额外数据的纯多对多链接表),因为我倾向于从应用程序/域模型/对象端处理更多的事情,而映射到对象的组合键通常是一个很难处理的问题,即使底层的映射技术支持它们。代理键(或者至少是单字段自然键)使事情简单得多。我不是一个关系数据库规范化恋物癖和“更好的性能”是高度怀疑从我的角度。如果系统中存在真正的性能问题,则保存偶尔的连接不会节省您的时间。 |
2
1
原则2.1完全解决了这个问题。 |
3
0
来自Doctrine2参考:
|
4
0
LEAP ORM ,它是用PHP 5编写的。在github上可以找到 https://github.com/spadefoot/kohana-orm-leap .
尽管它是为 Kohana PHP Framework ,只需向代码中添加一个简单的自动加载函数,就可以轻松地使它与任何PHP框架一起工作。Leap可用于以下数据库:DB2、trizzle、Firebird、MariaDB、MS-SQL、MySQL、Oracle、PostgreSQL和SQLite。它还提供查询生成器和数据库连接池。 在ORM的网站上,有很多 examples and tutorials |
Montaser Majid · 用于从多行中提取单行的SQL查询 2 年前 |
Chance · 根据Sequelize中的字段拉入特定记录/行 2 年前 |
lambchop01 · GORM如何为相似实体之间的关系建模 2 年前 |
Shale · 如何将此查询更改为ORM? 2 年前 |
Daniel Morales · 替换mongo DB中的嵌入字段 2 年前 |
Vinay P · NodeJS和ORM? 6 年前 |
MadDoctor5813 · 在Django模型中创建“简单”字典? 6 年前 |