Best practices for using data sources in CFC

I have an application that uses context sensitive data sources. I am currently storing data source information storing such

reqeust.DB.Datasource = "DatasourceName";
request.DB.Username = "DatasourceUsername"
request.DB.Password = "DatasourcePassword"

Then I rewrite the variables depending on the context, so each cfquery tag has the attributes datasource = "# request.DB.Datesource #" ... etc.

I want to start moving on to more CFC-oriented frameworks like Coldbox, but I just don't see how this works.

Do I need to pass the source object to the CFC init statement? It seems to be a super PITA.

+3
source share
2 answers

CF9 this.datasource Application.cfc . , /

A.) Injection Dependency, ​​ ColdSpring ( Singleton Services), LightWire Coldbox DI (Wirebox). / / init.

B.) <Datasources> Coldbox.xml.cfm, . http://wiki.coldbox.org/wiki/ConfigurationFile.cfm

<!--Datasource Setup, you can then retreive a datasourceBean
   via the getDatasource("name") method: -->
<Datasources>
  <Datasource alias="MyDSNAlias" 
                  name="real_dsn_name" 
                  dbtype="mysql" 
                  username=""
                  password="" />
</Datasources>
+3

, , .

<cfscript>
request.DB.Datasource = "DatasourceName";
request.DB.Username = "DatasourceUsername";
request.DB.Password = "DatasourcePassword";

request.randomDAO = createObject('component','DAOStuff.randomDAO');
request.randomDAO.init(DBObject = request.DB);

request.someQuery = request.randomDAO.someGetter();
request.someOtherQuery = request.randomDAO.someOtherGetter();
request.aThirdQuery = request.randomDAO.aThirdGetter();
</cfscript>

:

<cfscript>
request.DB.Datasource = "DatasourceName";
request.DB.Username = "DatasourceUsername";
request.DB.Password = "DatasourcePassword";
</cfscript>

<cfquery name="request.someQuery" 
    datasource=request.DB.Datasource 
    username=request.DB.Username 
    password=request.DB.Password>
    --SOME SQL HERE
</cfquery>

<cfquery name="request.someOtherQuery" 
    datasource=request.DB.Datasource 
    username=request.DB.Username 
    password=request.DB.Password>
    --SOME SQL HERE
</cfquery>

<cfquery name="request.aThirdQuery" 
    datasource=request.DB.Datasource 
    username=request.DB.Username 
    password=request.DB.Password>
    --SOME SQL HERE
</cfquery>

(, - CFC). DAO , :

<cfscript>
request.someQuery = application.randomDAO.someGetter();
request.someOtherQuery = application.randomDAO.someOtherGetter();
request.aThirdQuery = application.randomDAO.aThirdGetter();
</cfscript>
0

Source: https://habr.com/ru/post/1773466/


All Articles