簡體   English   中英

是否值得在Zend Framework中使用Doctrine 2?

[英]Is it worth using Doctrine 2 with Zend Framework?

我知道有些用戶在Zend Framework中使用Doctrine 2而不是Zend_Db。 但我不知道為什么。 為什么Doctrine2比Zend_Db好,為什么Zend_Db不好?

謝謝

(2013年3月7日)免責聲明:這個答案可能現在有點過時了。 我目前還沒跟上PHP社區,這種比較是在Doctrine ORM v2和Zend Framework v1之間進行的。 這是蘋果與橘子的比較,因為它們是兩個不同的東西。


開箱即用的Zend_Db更像是PDO之上的增強型數據庫抽象層,其中Doctrine 2是一個對象關系映射器(位於它自己的DBAL之上)。

對於更復雜的域層,Doctrine 2更好,因為所有業務邏輯,持久性邏輯等都是在多個類之間分離的,因此它們不能為多個角色提供服務。 此外,因為你有更多的類 - 更干凈和松散耦合 - 它使測試更容易。

此外,您將只編寫使用Zend_Db的SQL的一小部分,因為您可以操縱實體對象,而Doctrine會將這些更改轉換為數據庫。 生成的SQL還利用了可以獲得不錯性能的事務!

我建議你閱讀領域驅動設計,以便更好地理解為什么Doctrine 2如此出色。

不要誤解我的意思,你可以用Zend_Db做DDD,但它並不是真的有OOTB(因為它不是ORM),並且不會像Doctrine 2那樣功能強大且功能齊全。

如果您有一個必須使用特定DBMS的小項目,則不需要ORM和Doctrine。

如果你有一個很大的項目,並且將來可能需要適配器從一個dbms切換到另一個dbms,那么你可能會考慮使用Doctrine

正如您可以在Doctrine描述中閱讀:

Doctrine 2是PHP 5.3.0+的對象關系映射器(ORM),它為PHP對象提供透明的持久性。 它位於功能強大的數據庫抽象層(DBAL)之上。 對象關系映射器主要任務是(PHP)對象和關系數據庫行之間的透明轉換。

Zend_DB和Doctrine使用不同的方式。 Zend_DB的工作方式類似於表數據網關和行數據網關。 Doctrine是對象映射器。

根據我的經驗,Zend_DB對於大多數常見任務而言足夠快速。 Doctrine很慢並且使用的內存比Zend_DB多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM