集成 Vaadin 7 和 EJB 的最佳方式是什么?或者如何制作服务层?我想使用 JPA 来保存数据。我正在考虑这个架构:Vaadin -> EJB(Service) -> JPA。也许你有更好的解决方案。顺便说一句,将来我会添加 Web 服务。
最佳答案
嗯,你的架构很简单(这很好),让我建议你一些符合你 future 意图的概念。
您认为应用程序的方式可能类似于:
UI -> 边界 -> 控制 -> 实体
从技术角度来看,是这样的:
Vaadin (MVC/P) -> EJB -> CDI 对象 -> JPA 实体。
这种方法的主要优点是:
您的 UI 可以是您喜欢的任何内容(JSF、GWT、Vaadin...),并且不依赖于服务层。
边界表达了提供服务层的契约(Contract),也就是说,您可以重用该边界并为其提供任何您需要的暴露,这将是一个rest-boundary,webservice-boundary,rmi-boundary,所以上,您需要的任何类型的协议(protocol)。
以 EJB 作为边界,您可以启动异步方法、JMS 使用者、在服务层强制执行安全性并使用计时器服务。
CDI 控件将让您以奇特的方式使用依赖注入(inject)(您知道配置器模式吗?> http://www.adam-bien.com/roller/abien/entry/how_to_configure_java_ee ),并且如果您遇到需要某种模式(工厂、模板方法、复杂继承)的业务问题、制作人....)CDI 可以让您以富有表现力的方式实现所有这些。更不用说 EJB + CDI 会破坏交易!
控件是由边界编排的,其行为应该被很好地封装。显然,您的边界可以根据需要使用尽可能多的控件,但不要过度设计,如果只有一个边界就足够了,那么,请保持简单。
最后是JPA实体,尽量表达尽可能多的业务概念,如果关系之间有继承,不要害怕用JPA来实现。这将节省您的样板代码,消除系统中的重复并且更易于使用。 (提示:尝试使用 bean 验证规范。)
注意:这是基于 SOA 概念(即 @Stateless EJB),如果您的应用程序更面向 RIA,可能对您学习如何使用 @Stateful EJB(网关模式)有用
玩得开心!
关于java - 集成 Vaadin 7 和 EJB 的最佳方式或如何制作服务层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21804438/