1

オブジェクト指向のアプローチとストアド プロシージャを活用して、新しいコールドフュージョン アプリケーションを構築しています。すべてが魔法のように機能しますが、アプリは SP と最適化された mysql コードのおかげで非常に高速です。ストアド プロシージャ。とはいえ、一般的に、グローバル DNS パラメーターの保存に関しては、どのようなアプローチが最善でしょうか?

1.これは 1 つのグローバル DSN に使用できます

<cfset this.datasource ="myDB">

2.これは、1 つのグローバル DSN にも使用できます。

<cffunction name="onApplicationStart" returnType="boolean" output="false">
<cfset application.dsn = "myDB">
<cfset application.username = "userName">
<cfset application.password = "password">
<cfreturn true>
</cffunction>

2.1 onRequest 以外はすべて上記と同じ

3.私の場合、dbcode.cfc内にグローバル変数を作成することもできました

<cfset variables.dsn = "myDB">
<cfset variables.username = "userName">
<cfset variables.password = "password">

4.さらに、複数のデータソースを設定するためにこのようなものを使用できます

<cffunction name="onApplicationStart" returnType="boolean" output="false">
<cfset application.myDSNs = StructNew()>
<cfset application.myDSNs.1 = "myDB1">
<cfset application.myDSNs.2 = "myDB2">
.
.
.
<!---something similar for usernames and passwords--->
</cffunction>

では、この種のことを処理する最も効率的な方法は何ですか?

4

1 に答える 1

1

DSN に関する質問の各部分にお答えできるかどうか見てみましょう。

  1. datasource を application.cfc コンストラクターの一部として設定しても問題ありません

  2. OnApplicationStart() で DSN を設定することもできますが、以下を使用する必要があります。

    <cfset application.datasource = "myDB">
    

2.1リクエストごとにデータソースを変更しない限り、リクエストごとにデータソースを設定しても意味がありません。私はそうではないと思う

  1. に触れないでくださいqueries.cfc。これは ColdFusion の内部的なものであり、サーバー上のすべてを破壊する可能性があります。

  2. 配列と構造体の違いについて読み進めたいと思うかもしれません。あなたがやりたかったことは次のようです:

<cfset application.myDSNs = ["MyDB1", "MyDB2]>

その後、次の方法でアクセスできます。

#application.myDSNs[1]#
#application.myDSNs[2]#

私はこのアプローチをしません。通常、データベースは配列ではありません。各サーバーには独自の目的があります。DSN は、次のいずれかを反映している必要があります。

  • サーバー
  • データベース
  • 目的
于 2013-10-20T15:41:59.150 に答える