Как настроить ORM ColdFusion для DSN с несколькими областями действия? - PullRequest
6 голосов
/ 18 ноября 2011

Как настроить ORM в ColdFusion 9 для использования нескольких DSN, если это возможно?

Возможно ли настроить источник данных в контексте области сеанса вместо области приложения?

Или как в CF9 настроить Hibernate на использование нескольких DSN?


Похоже, я должен быть более конкретным ... Я ищу решение, которое позволяет указать DSN на основе сеанса.

Вот сценарий. У нас есть одно специальное приложение, которое использует несколько DSN, которые определяются из субдомена. Таким образом, кто-то, получающий доступ из http://abc.domain.com, будет использовать DSN abc, где кто-то, посещающий xyz.domain.com, будет использовать DSN xyz. Имя DSN определяется при создании сеанса и сохраняется как переменная сеанса.

Я бы хотел сделать что-то вроде этого:

// 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 = {}; 
}

Ответы [ 2 ]

1 голос
/ 31 января 2012

Хотя можно настроить ColdFusion 9 для использования нескольких источников данных с ORM в области приложения, невозможно настроить ORM ColdFusion 9 для работы с несколькими DSN в рамках сеанса.

1 голос
/ 18 ноября 2011

Представленный в обновлении ColdFusion 9.0.1, вы можете использовать несколько источников данных с ORM .По одному на компонент.Используйте атрибут «источник данных» в вашем объекте, чтобы указать, какую базу данных следует использовать.

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

    ...
</cfcomponent>

или

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