java - 集成 Vaadin 7 和 EJB 的最佳方式或如何制作服务层?

标签 java jpa service ejb vaadin

集成 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/

相关文章:

java - JPA 3 向连接注解

mysql - 共享数据的一致性,使陈旧数据对象的写入无效

c# - 从 C# 代码停止 Windows 服务不起作用

hibernate - Service-Dao 模式、DTO 和关系数据库

java - MySQL语法错误Java表创建

java - 具有相同依赖关系的 Dagger 2 多个组件

Java 1.7 更新 45 - 无法运行未签名的 jar

java - 简化 XML 树 - 获取元素之间的关系

mysql - Jpa一对多使用连接表

android - aSmack 即服务