在尝试使用EJB创建应用程序之前,我正在尝试学习Spring Framework。
[Web services]->[Business Layer]->[DAO Layer]
| [数据库]
以下列方式
WebServices :Jersey
与结合使用的Restful API url mappings
,支持JSON和XML format(news/list.json
,news/list.xml
)。端点(URL映射方法)接收到请求后,会将其通过查找(远程,本地)转发到相关的EJB。EJB处理所有事情,应用业务规则并将结果作为DTO(数据传输对象)返回,服务然后将结果转换为所需的格式(JSON,XML)
业务层 :EJB
通过remote
和local
接口实现的业务层(Facade),这些EJB可以调用其他EJB。WebService层(和/或Timer服务和MDB)也可以调用任何EJB)。我使用了EJB Timer Service
与计时器服务相关的功能,并使用了消息Message Drive Bean
和用于日志记录和审核的拦截器。
DAO层 :所有的数据库相关的功能(添加,编辑,删除,搜索)JPA/Hibernate
使用EntityManager
此写入(实体bean和HQL)。无缝事务支持,每个EJB的方法(基于查找)调用都被视为一个单独的事务,而DAO层的调用方法是同一事务的一部分(前提是未提供任何额外的配置)。在一个事务中执行多个操作如果一个数据库操作失败,则所有其他操作将自动回滚。每个表都映射为具有关系等的实体类。
我已经研究过,Spring MVC
但是对于上面的体系结构我无法正确地映射/理解,我对AOP有所了解,并且我认为它是Interceptor的完美替代品(或者至少对我有用)
现在我的问题是如何在Spring框架中替换所有这些 ?
spring的泽西(RestAPi)替代产品?
我认为Spring MVC可以做到这一点。只需将您的方法中的方法注释为要使用的REST API。
Spring中的EJB替代方案(由于EJB支持远程处理,因此对方法的每个查找调用都被视为事务,对EJB方法的调用可以被拦截,并且具有全状态和无状态形式)?
没有完整的选择。有几种技术可以部分实现此功能:用于远程调用的Spring远程处理,作为事务的Spring事务,用于拦截调用的Spring
AOP拦截器。但是,例如,在Spring中,远程调用上的XA事务并非如此。但是,Spring与EJB配合良好,因此,如果您喜欢它们,仍然可以使用它们,并在软件的其他部分使用Spring。
Spring中的Timer Service替代方案?
Spring任务调度
Spring中的Message Drive Bean替代方案?
消息侦听器容器
拦截器替代方案是在spring进行AOP(根据我的经验并能达到我的目的)
spring有几层拦截器。mvc中有处理程序拦截器,有诸如SpringAutowiringInterceptor之类的bean调用拦截器,还有一些可以在多层中使用的基于AOP的拦截器。
在spring使用JPA(实体管理器)替代方案?
Spring也有多个。仅将JPA与Spring-Data结合使用实际上是非常简单的,它被设计为集成到JPA。如果Spring Data不是您想要的,还有Spring
JDBC
和其他数据层替代方法。
问题内容: 我现在正在使用Entity Framework,并且由于实体框架不支持全文搜索和其他功能,因此经常不得不编写内联sql。是否有一个具有许多支持高级查询功能的ORM?我觉得如果我有时要编写内联sql,那么我也最好在内联sql中做所有这些事情。这里有什么帮助 问题答案: 看一眼: 在DataObjects.Net中的LINQ查询。如果您对最复杂的部分感兴趣,请从尾部开始。 DataObje
问题内容: 我们有一个类,其中包含应用程序的配置信息。它曾经是一个单身人士。经过一些体系结构审查后,我们被告知删除单例。我们确实看到了在单元测试中不使用单例的一些好处,因为我们可以一次测试所有不同的配置。 没有单例,我们必须在代码中的所有地方传递实例。变得太乱了,所以我们写了一个单例包装器。现在我们将相同的代码移植到PHP和.NET,我想知道是否有更好的模式可用于配置对象。 问题答案: 在谷歌测试
RxJava中是否有与RxAndroid中的AndroidSchedulers.mainThread()同义的Scheduler api。因此,如果我在一个新线程上安排一个任务,并且我想在Java主线程上观察它,我将如何做到这一点? 下面的edit是一个RxSubscription示例,带有system。在注释中,主线程被终止,而可观察线程被终止。interval在单独的线程上运行。在Androi
我正在努力翻阅这本生锈的书。在“字符串”一章中,许多示例使用了_string(),我的编译器版本(rustc 1.0.0-dev)给出了以下警告 代码: 我从这个问题中了解到,这是因为API可能会更改,但我想知道如果我想转换字符串片段(str),我应该使用什么来代替它
问题内容: 当我使用MSTest Framework并复制Selenium IDE为我生成的代码时,MSTest无法识别和。有什么替代方法? 问题答案: 您将分别使用和。
在RxJava 2和Reactor中,如果当前流中没有元素,则有一种类似switchIfEmpty的方法来切换到新流。 但是当我开始使用Minute时,当我将Quarkus样本转换为使用反应特性时,我找不到替代方法。 目前我的解决方案是:在我的PostRepository中,我使用一个异常来表示没有找到帖子。 并在中捕获它。 如何在中返回表示0或1元素,并在中使用类似的方法来构建流的替代路径?
我正在使用Java SDK在HarmonyOS中创建一个自定义组件。在那里我必须为动画组件的动画工作。我必须在int值之间动画组件。为此,我需要AnimatorValue的实例(在Android ValueAnimator中)。 在Android中,我们可以创建ValueAnimator的实例并传递int值,如下所示: 但是,在HMOS中,我可以使用下面的代码创建AnimatorValue的实例:
问题内容: 我有一个字符串数组,每个字符串包含3个字母。每3个字母(每个元素)对应一个唯一字母。我需要从字符串数组创建一个char数组。 我能想到的唯一方法是遍历字符串数组中的每个元素,并使用一个长的switch语句来确定其关联的单个字符。 还有什么其他方法可以实现? 问题答案: 如果是映射/查找,那么通常地图/词典可以解决您的问题。C#中的此类结构示例: 如果有这样的映射,则只需从映射中查找字母