Architecture javaee中的分层体系结构

Architecture javaee中的分层体系结构,architecture,jakarta-ee,Architecture,Jakarta Ee,我有一个我一直无法解决的问题: 考虑到这两种架构 第一 第二 他们之间有什么区别 实体bean在这些体系结构中位于何处。如果我有一个带有实现业务逻辑的对象的业务层,为什么我必须在实体bean中添加行为。我在某个地方读到,拥有没有行为的域模型对象是一种反模式 谢谢 更新 这实际上是一个项目(培训),我需要做的是获得分布式系统的理学硕士学位 这些就是我正在使用的技术 支柱2 JPA HSQLDB 所以如果我理解得好的话 我的申请包括 客户端层(web浏览器) 表示层(struts 2) 业务层(PO

我有一个我一直无法解决的问题:

考虑到这两种架构

第一

第二

他们之间有什么区别

实体bean在这些体系结构中位于何处。如果我有一个带有实现业务逻辑的对象的业务层,为什么我必须在实体bean中添加行为。我在某个地方读到,拥有没有行为的域模型对象是一种反模式

谢谢

更新

这实际上是一个项目(培训),我需要做的是获得分布式系统的理学硕士学位

这些就是我正在使用的技术

支柱2 JPA HSQLDB

所以如果我理解得好的话

我的申请包括

客户端层(web浏览器) 表示层(struts 2) 业务层(POJO+JPA) 集成层(使用hibernate DAOs) 资源层(HSQLDB)

但由于表示层、业务层和集成层是在同一台服务器(tomact)上实现的,所以我只有三层体系结构。我说得对吗

就在我的JPA对象中包含行为而言,我通常是这样做的: 每个JPA实体都有一个dao。 有一个bean(比如EJB)来管理所需的业务逻辑。所以我从不在JPA对象上放置beahvior

比如说,我想提出一个购买请求。我将有一个目录管理员,可以帮助我与物品、供应商进行互动。我还会有一位员工经理,帮助我与员工互动。最后是一个PurchaseRequestManager,它将使用前面两个业务对象发出PurchaseRequest

现在,您要告诉我的是将PurchaseManager中的方法放入PurchaseRequest JPA实体中,并对EmployeeManager=>中的方法执行相同的操作,将它们放入Employee JPA实体中

但是如果我的employee对象也用于人力资源部门,那么会发生什么呢?我还需要在那里放置其他方法。对于大型应用程序,我在employee JPA实体中有很多方法。这不是适得其反吗

谢谢

在我看来,“层”是一种逻辑分离,没有部署拓扑的含义

“分层”是关于物理部署的。例如,UI层逻辑可以完全在厚客户端中实现,部署到桌面上的客户端层,而不部署单独的表示层,或者可以是基于Web 2.0浏览器的应用程序,UI层分布在浏览器中的Javascript UI客户端和服务器中的表示层之间

现在来看看全豆。首先,EJB3中的实体bean被JPA替换——我们注释对象以控制它们的持久性

我认为你有两种业务逻辑,一种是关于单个持久类的行为,比如客户、订单、员工、发货、学生、课程或其他什么,然后是他们的逻辑,在更高的层次上,处理这些类的组合

对我来说,与客户行为有关的逻辑应该在Customer类中,这似乎是合理的。这种行为可能非常简单,例如某些类型的验证和总结(例如,总订单值),但它是域逻辑,可以合理地位于这些域对象中。因此,我们的JPA对象有两个角色,一个是实现域逻辑,另一个是通过注释管理持久性。这些注释的体系结构状态很有趣,它们实际上是域和基础结构之间的“粘合剂”。

来自:

层和层的概念经常互换使用。 然而,一个相当普遍的观点是,确实存在 层是一种逻辑结构机制 构成软件解决方案的元素,而层是 系统基础设施的物理结构机制

基本上,有3个“部分”需要解决:

  • 客户端-这是演示发生的地方,也是与应用程序进行动态交互的客户端编程(Javascript)存在的地方

  • 业务-这是所有业务逻辑存在的地方。算法、域模型、应用程序的“肉”。如果您使用EJB,EJB就住在这里

  • 数据-通常是从业务层访问的数据库

  • 您的(不推荐使用的)实体bean存在于业务层中。但是不要使用JPA,因为它更现代,也更简单

    您还可以将JPA实体用于业务逻辑,因为它们非常“轻量级”,所以不需要完全分离

    力求简单,不要过度使用“架构”、“设计模式”、“企业模式”或任何听起来过于进取的东西

    UI layer
        |
    Application layer
        |
    Domain Layer
        |
    Infrastructure Layer
    
    Client Tiers
        |
    Presentation Tiers
        |
    Business Tiers
        |
    Integration Tiers
        |
    Resources Tiers