2015-06-08 25 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

相关问题