我在使用DBIx::Class創建了一個Catalyst應用程序。它工作得很好,但有時我需要使用我自己開發的db函數,這些函數非常符合我的需求。正因爲如此,我需要一個dbh。但是,因爲我已經在使用DBIx::Class
我知道它已經有了一個dbh,它正在使用。爲了避免與數據庫建立另一個不必要的連接,我想只使用DBIx::Class
已經創建的dbh。我知道DBIx::Class::Storage::DBI模塊有兩種方法dbh
和dbh_do
,但我不確定兩者之間有什麼不同,以及它們是否是訪問dbh的最佳方法。任何人都可以告訴我從DBIx::Class
獲得dbh的最佳方式是在Catalyst
應用程序中嗎?我更喜歡一種我可以轉發的方法,將dbh存儲在如下藏品中:DBIx :: Class獲取dbh
sub dbh :Private {
my ($self, $c) = @_;
$c->stash->{dbh} = #get dbh from DBIx::Class here
}
謝謝!
是否有任何理由使用'dbh_do'來代替?因爲'dbh'的文檔說:'考慮使用「dbh_do」來代替.'。 – srchulo
我自己並沒有使用它,但'dbh_do'的文檔說這是使用一個新的異常系統。 (我想通過包裝'$ dbh-> do'並執行提供的函數。)所以我想這就是爲什麼。不過,我從來沒有遇到過使用原始'$ dbh'的任何問題。 – friedo
@srchulo是的,你在'dbh_do'下運行的任何東西都將受到DBIx :: Class連接管理(如果DB連接丟失,則重新連接)。對於非常好的交易管理還有'txn_do'。 – hobbs