2011-11-18 8 views
6

¿Cómo se configura el ORM de ColdFusion 9 para usar múltiples DSN si es posible?¿Cómo se configura el ORM de ColdFusion para múltiples DSN de alcance de sesión?

¿Es posible configurar el origen de datos en el contexto de un ámbito de sesión en lugar del ámbito de la aplicación?

O cómo, en CF9, configura Hibernate para usar múltiples DSN?


parece que debería ser más específico ... Busco una solución que permite especificar un DSN basado en la sesión.

Aquí está el escenario. Tenemos una única aplicación personalizada que utiliza múltiples DSN que se determinan a partir del subdominio. Entonces, alguien que acceda desde el http://abc.domain.com usaría el DSN abc donde alguien que visite xyz.domain.com use el DSN xyz. El nombre del DSN se determina cuando se crea la sesión y se almacena como una variable de sesión.

me gustaría hacer algo como esto:

//Artists.cfc

component persistent="true" datasource="#session.dsn#" 
{ 
property name="artistid" generator="increment"; 
property firstname; 
property lastname; 
property address; 
property city; 
property state; 
} 

// Application.cfc

component output="false" { 
THIS.name = "MultipleDsnORMTest"; 
THIS.applicationTimeout = createTimeSpan(0, 0, 0, 0); 
THIS.clientManagement = false; 
THIS.datasource = ""; // Leaving black ==> "No data source specified." 
         // Setting to cfbookclub ==> "ORM is not 
         // configured for the current application." 
         // Setting to cfartgallery works but doesn't 
         // demonstrate use multiple DSNs 
THIS.loginStorage = "cookie"; 
THIS.sessionManagement = true; 
THIS.sessionTimeout = createTimeSpan(0, 0, 0, 0); 

THIS.ormenabled = true; 
THIS.ormsettings = {}; 
} 

Respuesta

1

Aunque es posible configurar ColdFusion 9 de utilizar múltiples fuentes de datos con ORM en el ámbito de aplicación, no es posible configurar ORM ColdFusion de 9 de trabajar con múltiples DSN dentro el alcance de la sesión.

+0

Entonces, ¿tenía que mantener 'datasource =" xyz "' hardcoded (xyz) en su 'Artists.cfc'? ¿O encontró una manera de hacerlo dinámico? – Sergii

+0

@Sergii No he trabajado mucho con los ORM de CF debido a sus limitaciones en múltiples fuentes de datos. Por mucho que espero que no sea cierto, creo que la respuesta es que el origen de datos debe estar codificado. Con suerte, alguien me corregirá si me equivoco. Consideré la codificación difícil como la de malas prácticas de programación, así que realmente espero estar equivocado. – Micah

1

Introducido con la actualización de ColdFusion 9.0.1 , puede usar multiple data sources with ORM. Uno a la vez por componente. Utilice el atributo "fuente de datos" en su objeto para especificar qué base de datos se debe usar.

<cfcomponent displayname="firstObject" datasource="dbOne"> 
    <cffunction> 
     ... 
    </cffunction> 

    ... 
</cfcomponent> 

o

component datasource = 'dbOne'{ 
    ... 
} 
+0

¿No fue posible definir un valor predeterminado en el nivel Application.cfc, lo que significa que solo necesitará agregar el atributo del origen de datos si está haciendo referencia a datos desde otro lugar? –

+0

Si omite el atributo del origen de datos en el objeto/componente, se utilizará el origen de datos predeterminado definido en la aplicación.cfc –

+0

¿A qué se establece el origen de datos del nivel Application.cfc? – Micah

Cuestiones relacionadas