Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EJB中的Facades与基于spring的web应用程序中的服务是否相同_Java_Spring_Jakarta Ee_Architecture_Ejb - Fatal编程技术网

Java EJB中的Facades与基于spring的web应用程序中的服务是否相同

Java EJB中的Facades与基于spring的web应用程序中的服务是否相同,java,spring,jakarta-ee,architecture,ejb,Java,Spring,Jakarta Ee,Architecture,Ejb,我参与了几个基于Spring的web应用程序项目,并且自己也写了很多。通常(粗略地说)我们有以下文件夹按类别划分我们的类,如dao、models、web(如果我们使用Spring MVC或支持JSF的Bean,那么控制器)以及服务——这里我们保留了我们认为是业务逻辑的内容(即使有时这里的类只是将方法转发给dao) 现在我面临EJB应用程序的开发——我知道我将有一些web和model类。我也可以使用专用dao层,或者可以将数据访问放到facades(我更喜欢专用文件夹,尽管它增加了详细性) 但我不

我参与了几个基于Spring的web应用程序项目,并且自己也写了很多。通常(粗略地说)我们有以下文件夹按类别划分我们的类,如
dao
models
web
(如果我们使用Spring MVC或支持JSF的Bean,那么控制器)以及服务——这里我们保留了我们认为是业务逻辑的内容(即使有时这里的类只是将方法转发给dao)

现在我面临EJB应用程序的开发——我知道我将有一些
web
model
类。我也可以使用专用
dao
层,或者可以将数据访问放到
facades
(我更喜欢专用文件夹,尽管它增加了详细性)

但我不清楚facades是否正是将业务逻辑放入it的地方,或者我应该为it添加
服务
文件夹,并使用
facades
更像
dao
(消除
dao
本身)


我也很高兴能对EJB应用程序体系结构的提示进行简短而全面的编译。

我将使用与Spring类似的EJB设置,然后是包含大多数业务逻辑的服务层,然后是包含基本CRUD操作和一些数据库查询的DAO层

在这个场景中,您可以使用不需要数据库的快速单元测试来测试会话bean中可能复杂的业务逻辑,并且可以在这里模拟DAO访问。然后,您可以对DAO层进行相对简单的测试,因此需要数据库的测试数目(即速度相当慢的测试)会更少


通常我会调用
facade
一组会话bean,这些bean提供了通过Web服务操作系统的简单方法。这些bean将使用普通的服务层bean。由于只有一个Web层,没有集成层,我认为没有理由创建额外的
facade
层。

facade不是一种模式吗您为用户提供了一个更高级别的API,而用户本身又使用了更复杂或“内部”的服务?是的,这是一个问题,尽管在EJB应用程序的体系结构中,
facade
仅指模式还是指应用程序的结构元素(通常以相同模式实现)如果有人能给我解释一下,我会很高兴的!我喜欢你的提议和解释。如果没有其他想法,也许我会接受:)谢谢。祝你的项目好运。