2009-12-22 93 views
2

我正在構建電子郵件通知服務,要求在用戶註冊時向用戶發送電子郵件。 目前我正在考慮執行觸發器中定義的某些函數,它可以是一個java函數,它必須在mysql進程之外,而不是從外部監控mysql以便在數據庫中添加行。我可以通過mysql觸發器在mysql外執行任何程序嗎?

mysql中是否有任何功能可用,以便我可以從數據庫觸發器執行我的java函數?

回答

3

如果您使用Java作爲數據庫的前端,那麼爲什麼不在Java中間層代碼而不是觸發器中進行呢?數據庫用於持久性。如果您稍後決定使用其他形式的通知,則會發現將它添加到Java而不是MySQL更容易。

+0

我的擔心是時間差距。儘早發送通知對我的應用程序非常重要。我也可以創建一個Java守護進程,這可以極大地提高我的數據庫性能。如果我在沒有任何睡眠的情況下對數據庫進行輪詢,情況會好嗎?如果我的投票評分降低了我的數據庫性能,我感到害怕。 任何意見.... – sumitarora 2009-12-22 13:50:08

+0

沒有投票需要。保持記錄的服務將電子郵件作爲交易的一部分發送。這是一種事件驅動的方式 - 輪詢更加高效和優雅。通過這種方式,您可以確定只有在交易成功時它纔會消失。 – duffymo 2009-12-22 17:43:55

+0

「服務」,我的意思是「實現接口的Java POJO」,不一定是Web服務。 – duffymo 2009-12-22 17:44:41

1

您可以通過user defined functions,但IHMO不是好的做法,因爲您的數據庫存儲數據,而您的應用程序執行(大部分)業務邏輯。將電子郵件通知添加到業務層也不應該很複雜。

相關問題