2015-06-08 28 views
0

這是一個非常基本的問題,我很抱歉,但我似乎無法獲得一個簡單的基於Tapestry-IOC的應用程序使用內置的Tapestry JPA模塊。在非web項目中使用tapestry-jpa與tapestry-ioc

該應用程序不一定意味着Web項目,所以依賴關係只是tapestry-ioc和tapestry-jpa用於JPA集成。我之前使用過hibernate-entitymanager,一切正常。但我想我可能更願意使用Tapestry的官方JPA支持。

所以我所做的就是得到上面提到的依賴關係(在Tapestry 5.3.7版本中)並寫出測試的開始。 這開始看起來像這樣

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class); 
EntityManager em = registry.getService(EntityManager.class); 

這就是全部。因爲只要我嘗試這個,我會得到一個錯誤,即沒有服務會實現EntityManager接口。

所以我加了掛毯JPA模塊:

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class, JpaModule.class); 

但我還是那句話得到了JpaModule希望有助於ApplicationStatePersistenceStrategySource服務,這是不存在的錯誤。該服務似乎在TapestryModule來定義,所以我做

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class, JpaModule.class, TapestryModule.class); 

但是,這會導致錯誤由於缺少Servlet API的。所以現在我已經到了必須爲Tapestry定義Web環境的地步。但我不想要這個,我只是想使用JPA集成。

這甚至可能嗎?如果是這樣,我該怎麼做?在http://tapestry.apache.org/integrating-with-jpa.html之後的文檔在這方面沒有幫助。

非常感謝您的閱讀,任何暗示讚賞!

回答

1

快速回答 - 我可能是錯的 - 但我認爲Tapestry-jpa打算使用JPA和Tapestry-core(Web框架)。我認爲在你的情況下,對於普通的JPA沒有任何好處。

+0

那麼,正如我所見,使用官方Tapestry JPA支持的優點是事務管理,例如,通過@CommitAfter註釋,實體的自動包掃描,EntityManager的框架管理以及其他可能的東西。當我僅僅使用帶有IOC服務的Tapestry-JPA時,我也可以做到這一切。但是,也許我錯過了首先使用Tapestry-JPA集成的真正的酷酷理由? :-) – khituras

相關問題