1

ファイアウォールを介してデータベース接続を取得する必要があります。また、実行できるクエリを制限する必要があります。DBD::Proxyはこれに対する完璧なソリューションのようです。ただし、現在DBIx :: Classを使用しているため、それらをフックする方法がわかりません。

特に、DBD::ProxyはSQLを使用しません。特定の名前付きクエリが必要です。しかし、DBIx :: Classには、これらの名前付きクエリを呼び出す方法がないようです。

これはCatalystベースのWebアプリ内にあります。

4

1 に答える 1

1

DBD::ProxyはSQLを取ります。便利な名前付きクエリが可能です。

DBIx :: Class Object-Relational Mapper(ORM)の目的は、SQLのデータ操作言語(DML)のオブジェクト指向ビューを表示することであるため、DBD::Proxyという名前のクエリでDBIx::Classを使用する便利な方法はありません。 )ステートメント。DBD :: Proxyの名前付きクエリ機能はDMLステートメントではないため、DBIx :: Classには、DBD :: Proxyドライバーのprepare()関数にリテラル文字列を直接渡すというニーズに合った機能がありません。

いくつかの不便な方法:

  1. DBIx::Classは使用しないでください。DBIでそれを行うだけです。Catalyst :: Model :: DBI、またはプレーンDBI + Catalyst :: Model ::Adapter+独自のモデルクラスを使用できます。

  2. 名前付きクエリは使用しないでください。つまり、データベースへのアクセスを制御する方法として名前付きクエリを使用することを計画している場合は、コントローラーまたはモデル内のデータベースを呼び出すコードにクエリ承認ロジックを移動する必要があります。アプリケーションをどのように構築したか。

于 2008-12-01T18:42:03.143 に答える