2008-12-01 36 views
1

我需要通過防火牆獲得數據庫連接,並限制可以運行的查詢。 DBD :: Proxy似乎是完美的解決方案。但是,我目前使用DBIx :: Class,並不知道如何將它們連接在一起。如何在DBIx :: Class中使用DBD :: Proxy?

特別是,DBD :: Proxy不採用SQL;它需要特定的命名查詢。但是DBIx :: Class似乎沒有辦法調用這些命名查詢。

這是基於Catalyst的web應用程序。

回答

1

DBD :: Proxy確實需要SQL。它允許命名查詢作爲一種方便。

由於DBIx :: Class對象關係映射器(ORM)的目的是呈現SQL數據的面向對象視圖,所以沒有方便的方式將DBIx :: Class用於DBD :: Proxy命名查詢操縱語言(DML)語句。 DBD :: Proxy的命名查詢功能不是DML語句,因此DBIx :: Class沒有適合您需要的功能:將文字字符串直接傳遞給DBD :: Proxy驅動程序的prepare()函數。

有些不方便方式:

  1. 不要使用DBIx ::類。只需在DBI中完成。你可以使用Catalyst :: Model :: DBI,或者普通的DBI +催化劑:: Model :: Adapter +你自己的模型類。

  2. 請勿使用命名查詢。這意味着如果您計劃使用命名查詢作爲控制對數據庫訪問的方式,那麼您需要將查詢授權邏輯移入代碼中,以便調用控制器或模型中的數據庫,具體取決於你如何構建你的應用程序。

+0

這幾乎證實了我的預期。不幸的是,我不能將訪問控制權移交給應用程序,因爲我們的目標是保護數據庫免受互聯網可訪問的Web服務器的危害。 – derobert 2008-12-01 21:30:23

相關問題