【问题标题】:How to configure ColdFusion's ORM for multiple session scope DSNs?如何为多个会话范围的 DSN 配置 ColdFusion 的 ORM?
【发布时间】:2011-12-31 23:00:48
【问题描述】:

如果可能,您如何配置 ColdFusion 9 的 ORM 以使用多个 DSN?

是否可以在会话范围而不是应用范围的上下文中设置数据源?

或者,在 CF9 中,您如何配置 Hibernate 以使用多个 DSN?


看起来我应该更具体... 我正在寻找一种允许基于会话指定 DSN 的解决方案。

这是场景。我们有一个自定义构建的应用程序,它使用从子域确定的多个 DSN。因此,从http://abc.domain.com 访问的人将使用 abc DSN,而访问 xyz.domain.com 的人将使用 xyz DSN。 DSN 的名称是在创建会话时确定的,并将其存储为会话变量。

我想做这样的事情:

//Artists.cfc

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

// 应用程序.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 = {}; 
}

【问题讨论】:

    标签: hibernate orm coldfusion coldfusion-9 dsn


    【解决方案1】:

    随 ColdFusion 9.0.1 更新引入,您可以使用multiple data sources with ORM。每个组件一次一个。使用对象中的“datasource”属性来指定应该使用哪个数据库。

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

    component datasource = 'dbOne'{
        ...
    }
    

    【讨论】:

    • 是否可以在 Application.cfc 级别定义默认值,这意味着如果您从其他地方引用数据,则只需添加数据源属性?
    • 如果在对象/组件中省略datasource属性,则使用application.cfc中定义的默认数据源
    • 你将 Application.cfc 级别的数据源设置为什么?
    • 答案不完整。这行不通。必须配置 Application.cfc;引用的 Adob​​e 文档没有显示如何。
    【解决方案2】:

    虽然可以将 ColdFusion 9 配置为在应用程序范围内使用带有 ORM 的多个数据源,但无法将 ColdFusion 9 的 ORM 配置为在会话范围内使用多个 DSN。

    【讨论】:

    • 那么,您是否必须在您的Artists.cfc 中保留datasource="xyz" 硬编码(xyz)?或者找到了一种让它变得动态的方法?
    • @Sergii 由于 CF ORM 对多个数据源的限制,我没有进行太多工作。尽管我希望这不是真的,但我相信答案是数据源必须是硬编码的。如果我错了,希望有人能纠正我。我认为硬编码是一种糟糕的编程习惯,所以我真的希望我错了。
    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2013-04-02
    • 2011-02-06
    • 2018-06-25
    相关资源
    最近更新 更多