2010-10-30 46 views
3

我曾經寫過模型本身的數據訪問功能。現在我想要從業務邏輯中分離數據訪問。我使用codeigniter作爲框架。 看來,這樣做的一種方式是使用ORM,但它會有性能損失,我猜。如何在codeigniter中分離數據訪問層

是否有任何一般的最佳實踐?

回答

5

看一看POEAA的數據源架構模式:

笨聲稱使用ActiveRecord,but it doesnt。這更像是一個基本的QueryObject。要真正將您的DAO與您的Domain對象分開,您必須使用DataMapper。根據您的地圖需求的複雜程度,您可以自己創建一個或使用ORM。具有諷刺意味的是,PHP World中的大多數ORM都基於ActiveRecord,which is pretty ill-suited for ORM。 Doctrine 2是我唯一使用DataMapper方法的人。

ORM總是會帶來性能損失(可能是嚴重的)。但是,你不應該因此而排除ORM。在高impedance mismatch情況下手工製作高效的DataMapper可能是一件繁瑣而困難的工作。同樣,請參閱POEAA以獲取常見對象關係模式的列表。

似乎有DataMapper implementation for CodeIgniter with Overzealous DMZ。我從來沒有與它合作過,也不能說這些。它只是一個快速谷歌後,所以我想我在這裏添加它。