2011-10-25 47 views
3

我目前正在開發基於回合的持久性世界遊戲的遊戲服務器,主要針對智能手機,目前我正在開始實施持久層,並且正在尋找一些提示/建議。輕量級java事務管理

我原本計劃使用mybatis作爲持久層,而mybatis-guice插件實現了一個類似於Spring的簡單@Transactional註解,但沒有整個框架的重量。不幸的是,我發現mybatis是因爲我發現我和ORM過度爭鬥,而且我的關係設計沒有特別好地正常化。現在我基本上使用JDBC,並且我真的試圖避免編寫大量的樣板代碼來管理一系列DAO調用中的事務和連接。

我也避免在這裏使用任何應用程序服務器或添加使用彈簧,因爲他們似乎不適合,服務器運行在netty之上直接java。鑑於這些條件是否有任何簡單的交易管理人員,還是我試圖推出自己的?像mybatis-guice的@Transactional會很棒。

回答

1

春天和冬眠的組合是最好的兩個IMO都很輕,這取決於您的需求。

目前我們正在使用OpenJPA,對此也非常滿意。

它需要多少光?用Spring和Hibernate去吧,它們很輕。 Guice是一個簡單而輕量級的DI框架,我相信你知道這個框架,但是通過添加諸如事務管理等的東西,你將會得到太多的低端開源產品*(我並不是說Guice以任何方式低端)*你會發現它沒有比其他開源替代品輕,並且由於沒有很多人會使用它們,社區支持將會減少。

+0

春天似乎主要用於基於Web的應用程序沒有?我通過netty使用一個自定義的tcp協議來爲我的客戶端服務,這個服務器意味着用於在線遊戲。這會如何融入春天? –

+0

雖然我不知道它不是一個web應用程序,但彈簧在web應用程序之外工作得非常好,並不意味着它只是一個純web體系結構。給它一個去,我相信你會喜歡它。有更好的選擇嗎?可能不會,但可能會像春天一樣好。我在許多年前爲使用套接字的客戶端寫的聊天客戶端中使用了spring。我想最重要的是你必須爲自己衡量一下,但簡單的答案是肯定的,這將是完美的。 – Shahzeb

+0

春天在大多數情況下是好的,但我必須警告你。 @Transactional只能在Spring上下文直接創建的bean上工作。而且即使在註釋的bean內部它也不適用於本地調用。雖然有一個選項:你可以使用TransactionTemplate – SirVaulterScoff

2

如果您正在尋找一種更好的方式來完成數據庫工作而無需使用全面的ORM,那麼您可以查看JDBI。這是一個非常簡單的JDBC包裝器,它修復了很多瑕疵,遺漏和頭髮拉動的時刻。

+1

這不是一個交易管理器,但我希望解決你的「我的代碼不適合ORM井」問題。我還沒有發現JDBI需要一個事務管理器。 –