2016-12-20 56 views
0

我應該避免從其他數據庫訪問方法(即:同時打開多個Connection)調用數據庫訪問方法嗎?從另一個數據庫訪問方法中調用數據庫訪問方法

假設我有一個ObjectMessage及其相應的方法從DB selectMessge()中檢索它。

Message有一個字段叫user其中包含UserObject。 我通常代碼selectMessage看起來像這樣(其中rsResultSetObject):

... 
int userId = rs.getInt("UserId"); 
message.setUser(User.selectUser(userId)); 
... 

selectUser是一個數據庫訪問方法和上面明顯發生而Connection打開)

是以上好嗎?或者我應該:

  1. 檢索編號
  2. 關閉連接
  3. 檢索用戶對象(通過打開和關閉另一Connection

後者需要更多的代碼,因爲我需要爲用戶的Id在MessageObject中的單獨字段。

謝謝。

回答

1

這取決於您的要求。除非您連接不足,否則在一次打開期間再次建立連接應該不成問題。 雖然如果您使用的是JPA或hibernate,它將有不同的處理查詢的機制,所以您可能根本不會在這種情況下結束。

恕我直言,這是完全沒錯,只要你有你的數據庫支持足夠的連接。很多情況下這樣的事情已經完成

但是從代碼和性能的角度來看,我看到你會遇到其他一些問題。

  1. 正如我所看到的數據庫處理和業務處理不是孤立的,這可能會導致緊耦合,這反過來會導致增加的維護成本。
  2. 正如我看到你正在從結果集讀取userId後查詢。所以要麼你正在處理一個批處理,要麼你正在處理單個記錄。如果是批處理,則可以很好地收集所有用戶ID並稍後獲取記錄。這會對性能產生重大影響,如果您有單條記錄,那麼最好使用JOIN查詢,這也將爲您節省一次數據庫訪問,這也很重要。