gpt4 book ai didi

java - 表示层中的实体类?

转载 作者:行者123 更新时间:2023-12-01 12:10:24 25 4
gpt4 key购买 nike

我的问题是与多层应用程序的EJB 3.0 及更高版本相关的架构问题。

背景:您认为最好的解决方案是通过 session 外观将数据从数据库传递到表示层?分离的实体类将为我提供一个有吸引力的解决方案,但在这种情况下,它们应该被指定为 session 外观方法中的参数类型。因此,实体类还应该作为想要连接到 session 外观的 jar 提供给表示层或任何其他客户端。不知何故,我觉得这不是正确的方法,因为它们包含了表示层应该知道的更多内容,但我不确定,因为它们是独立的轻量级类,并且还表示关系并包含相关的集合类可以节省大量传输对象的工作来重新包装它们。

问题:EJB 3.0之前,在实体bean时代,数据应该被重新包装在传输对象中,并且传输对象组装器设计模式也可以用于构建复杂的用于建模 n-m 或 1-n 关系的数据结构。然而,实体类更加轻量级,我们可以省去这种重新包装。 您建议如何向表示层提供数据,您通常如何做?

非常感谢您的回复。亲切的问候,塔马斯

最佳答案

好的,我将根据我的 JSF 经验来回答。首先,在模型层中创建实体,然后在服务层中创建 EJB,从实体管理器访问实体(持久性上下文: https://docs.oracle.com/html/E13981_01/usclient005.htm )。在 JSF 情况下,每个服务器页面 (.xhtml) 都可以访问托管 bean(如下所示: http://docs.oracle.com/javaee/6/tutorial/doc/bnaqm.html )。托管 bean 可以访问 EJB(请查看此处的 CalculatorBean:http://tomee.apache.org/examples-trunk/jsf-managedBean-and-ejb/README.html)。

这样你就拥有了一个非常好的分层架构,具有松散的耦合和更容易的维护。但请记住,我只是回答 JSF 环境。

编辑

如果您的意思是如何访问 EJB 中的实体类数据(有状态、无状态或单例),那么您将必须使用实体管理器来管理 EJB 中的实体并填充它们/查找它们/保留它们/更新它们

EJB 示例:

@Stateless

公共(public)类 EmployeeDemoSessionEJB 实现 EmployeeDemoSession

{

         @PersistenceContext 

EntityManager em;

public void createEmployee(String fName,String lName){

Employee e = new e();

e.setFirstName(fName);

e.setLastName(lName);

em.persist(e);
}

}

将其想象为一个堆栈:网页到托管 Bean 到 session Bean 到实体希望对您有帮助

关于java - 表示层中的实体类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27312804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com