php怎么和数据库通信,php – 如何处理域和数据库层之间的通信?
加布里埃爾,這被稱為“
impedance matching problem”.有許多解決方案,從重量級的實體bean,如J2EE實體bean到Ruby ActiveRecord,再到簡單的手工連接編碼.
更新
好吧,很難在沒有更多信息的情況下很難確切地知道如何攻擊它,但這是基本的方法.
任何這些架構問題都是由性能等非功能性需求驅動的;此外,這里存在正確性問題,因為您希望確保以正確的順序完成更新.因此,您需要考慮工作負載,即實際應用程序中的使用模式.考慮到這一點,您基本上會遇到一些問題:首先,應用程序中的基本數據類型可能無法正確映射到數據庫(例如,代碼中表示的VARCHAR屬性是什么?),其次是域模型可能無法完全映射到您的數據庫模型.
你想要的是讓數據庫和dmain模型解決,以便域對象的一個??實例恰好是數據庫模型中表的一行;在大型應用程序中,由于性能限制或預先存在的數據庫模型所施加的約束,您很少這樣做.
現在,如果您完全控制數據庫模型,它會稍微簡化一些事情,因為這樣您就可以使數據庫模型更接近域.這可能意味著數據庫模型有些非規范化,但如果是這樣,您可以(根據您的數據庫)處理帶有視圖的數據,或者只是沒有完全規范化的數據庫.規范化是一種有用的理論構造,但這并不意味著你不能在真實系統中放松它.
如果您不完全控制數據庫模型,則需要一層對象進行映射.在實現它時,你有很多選擇可供選擇:你可以在數據庫中構建視圖或非規范化表,你可以構建中間對象,或者你可以做兩者中的一些,甚至可以有兩個步驟(即,訪問denormalizaed表的中間對象.)
但是,在這一點上,你遇到了“不要重復自己”和“做最簡單的事情可能有效”的問題.想想最有可能改變的是什么?你的域名模型?如果你有一個強大的領域模型,那就不太可能了 – 業務變化相對較少.數據庫中數據的確切表示?更常見的一點.或者,最常見的是確切的使用模式(比如發現需要處理并發更新).因此,當您考慮到這一點時,您需要做些什么才能使盡可能簡單的方法來處理最常見的更改.
我意識到這并沒有給你非常精確的指示,但我認為我們不能在不了解你的應用程序的情況下提供精確的指示.但是,當你已經在處理或多或少的工作時,我也會有一種印象,你想知道處理這個問題的“正確”方式是什么.所以,我最后會問“你現在對什么不滿意?”和“你想怎么解決這個問題?”
總結
以上是生活随笔為你收集整理的php怎么和数据库通信,php – 如何处理域和数据库层之间的通信?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发泄对上司不满 百度一程序员删库被抓:被
- 下一篇: php二维码存放json数据_PHP生成