1
與JdbcTemplate的選擇,或插入操作
我已經有了一些基本的情況下,我會很感激一些建議,如何處理與...如何處理共享DB
另外還有一個與現有數據庫some_table
兩列:
- 自動遞增的關鍵
- 和
name
描述該條
我有使用Spring 4應用來處理數據庫操作。
- 應用程序實例:
- 搜索與給定的名稱
SELECT * FROM some_table WHERE name='name1'
- 條目;如果找到一個它得到其主要
- 如果不是,它會創建新條目
INSERT INTO some_table (name) VALUES ('name1')
- 然後它得到它的密鑰
- 使用檢索到的密鑰以用於進一步處理...
- 搜索與給定的名稱
- 實例B可以做同樣的在同一時間。
因此,它可能會發生這兩個應用程序在同一時間對不目前存在同名做SELECT
然後這些都將有相同的名字和不同的密鑰INSERT
新的條目。
如何同步它們 - 這裏的最佳實踐是什麼?應用程序可以鎖定some_table
,直到它創建新條目或決定它不是必需的,然後釋放鎖定?是否可以使用Spring jdbcTemplate
來做到這一點?怎麼樣?
對我來說,這似乎是一些基本情況,可能有一些模式,我不想重新發明輪子......任何提示?
或者,也許直接由2個應用程序使用一個數據庫實例的整個想法是一個總體設計缺陷?
好吧,如果你可以分享你的代碼,這將有所幫助。你嘗試過'synchronized'塊嗎?如果沒有,你可以添加到您的方法發射sql查詢數據庫? – harshavmb
http://tutorials.jenkov.com/java-concurrency/synchronized.html可能會給你一些'synchronized'塊的概述。 – harshavmb
請記住,這個問題不是關於在一個應用程序中同步代碼/操作塊。有2個應用程序實例使用單個數據庫實例 - 同步必須發生在DB/SQL級別上。我可以引入另一個應用程序,它將作爲DB的接口/代理(它將同步請求),但也許有另一種/更簡單的方法... – alwi