2011-05-11 113 views
2

您是否認爲只使用GWT和Hibernate聽起來像是一個需要非常豐富的UI的Web應用程序的「理智」解決方案?GWT和休眠

+0

做休眠+ GWT搜索,你會發現,答案是「是」 – Bozho 2011-05-11 21:17:43

+0

謝謝你的回答。我已經做到了。縮放是我關心的問題。 – 2011-05-11 23:33:14

回答

2

簡而言之,是的。

你似乎有2個要求:

豐富的用戶界面: 正如你可能知道,GWT可以用來製作豐富的UI應用程序。可能性實際上是無止境的。 Hibernate不點起到任何作用1.

可擴展性, 確實是有很大的開銷與datamodels因爲每個Hibernate的實體將它們發送到客戶端時,要與GWT模型映射。正如用戶在上面指定的,有第三方應用程序可以幫助您這樣做。添加新的數據模型將觸發對服務器和客戶端代碼的更改。但是,如果你的架構足夠強大,這應該不是一個大問題。

1

是的,它使用了很多。基本上,你有兩個選擇:

  • 使用的DTO,總是初始化服務器
  • 使用您的休眠實體gilead
3

GWT和Hibernate是不是一個自然的匹配。有關爲什麼以及如何將它們一起使用的完整信息,請閱讀http://code.google.com/intl/es-ES/webtoolkit/articles/using_gwt_with_hibernate.html

但概括起來講,你將有3個選項:

  • 使用普通的數據傳輸對象(DTO的)。
  • 使用推土機。通過推土機,您仍在使用DTO,但推土機將爲您完成大部分工作。
  • 使用Gilead進行GWT端和服務器端之間的「神奇」轉換。

以我的經驗來看,「神奇」的解決方案在工作時非常棒。當他們不這樣做時,祝你好運。所以,如果我在你的鞋子裏,我會選擇選項1或2.

+0

Gilead沒有更多的維護,沒有保證它與Hibernate 3.5+一起工作(https://groups.google.com/forum/#!msg/toulouse-jug/pL1bNG3-gc0/rolqY-p-qGsJ) – 2012-09-18 20:47:32

0

Gilead在考慮GWT應用程序時導致最大的誤導。將GWT應用程序設計爲三層體系結構時,首先要考慮的是Web層是gwt生成的JavaScript UI,而應用程序層是您的RPC服務,但事實並非如此。它們都屬於Web層。在考慮Web層時,通常會對要顯示的數據進行數據轉換。但是使用Gilead時不會發生這種情況,而且您沒有機會這樣做。所以我總是推薦使用像Dozer這樣的數據映射器,當您將當前所有數據從數據庫傳輸到UI時。當您的應用程序增長時,您將需要轉換的時間到了!

1

我認爲已經在GWT 2.1+中解決的更好的解決方案是通過使用RequestFactory和Entity/ValueProxy機制。爲了更詳細地瞭解GWT中的這種成語,請參考此http://code.google.com/webtoolkit/doc/trunk/DevGuideRequestFactory.html

+0

謝謝!看起來谷歌正在填補自己的空白,這讓事情變得更容易,因爲不需要依靠第三方的魔法,就像rreyes1979所建議的那樣。 – 2011-05-13 07:49:15

1

確實是一個很好的架構,但你需要這一個完美的匹配。

http://beanlib.sourceforge.net/

//To response RPC with just the current entity 
    return new Hibernate3DtoCopier().hibernate2dto(entity); 

    //To response RPC with the entity with their related entities. 
    return new Hibernate3DtoCopier().hibernate2dtoFully(entity);