まあ、それは依存します。このクエリ データはどのくらいの頻度で更新されますか? それが本当に変更されていない場合、onApplicationStart() はそれを配置するのに適した場所です。ただし、頻繁に変更される場合は、一定期間クエリをキャッシュするように Coldfusion に指示するだけで、onApplicationStart() をいじる必要はありませんが、クエリを呼び出すと、キャッシュされた結果を自動的に(指定した期間内に)。
とにかく、データを取得するためのカスタム関数を作成します。次に、 onApplicationStart() または他の場所から呼び出すのは簡単です。
Startup.cfc: (好きな名前を付けます)
<!--- Replace the datasource name with your db name --->
<cffunction name="getStartupQuery" hint="Returns a query recordset for startup">
<cfargument name="datasource" required="no" type="string" default="OtherAppDB">
<!--- Init the query variable --->
<cfset var result = queryNew("id")>
<!-- Get the query dataset --->
<cfquery name="result" datasource="#arguments.datasource#">
YOUR QUERY HERE
</cfquery>
<cfreturn result>
</cffunction>
Application.cfc: (重要な部分のみ)
<cffunction name="onApplicationStart">
<!--- init the startup.cfc, then retrieve the data
and save it to the application scope. Remember the component name must match
your component above --->
<cfset var startup = createObject("component", "startup")>
<cfset application.varFromOtherDB = startup.getStartupQuery()>
<cfreturn true>
</cffunction>
これで、次を使用して、アプリケーション内の任意の CFM または CFC からこの変数にアクセスできるようになります。
<cfset myNewVar = application.varFromOtherDB>
or
#application.varFromOtherDB#
onApplicationStart() メソッドを使用する場合は、アプリケーションを再初期化するメソッドを実装することを強くお勧めします。例については、この他のディスカッションを参照してください。