Java 我可以使用什么来代替实体bean?
我想为在线学习编写一个JavaEE应用程序。我想到了这种数据表示:Java 我可以使用什么来代替实体bean?,java,jakarta-ee,entity,ejb-3.2,Java,Jakarta Ee,Entity,Ejb 3.2,我想为在线学习编写一个JavaEE应用程序。我想到了这种数据表示: @Entity public class Course { private String name; private String[] instructors; private String[] teachingAssistants; private GradeBook gradeBook; // plenty of methods } @Entity public class Gra
@Entity
public class Course {
private String name;
private String[] instructors;
private String[] teachingAssistants;
private GradeBook gradeBook;
// plenty of methods
}
@Entity
public class GradeBook {
private GradeBookColumn[];
// some methods
}
@Entity
public abstract class GradeBookColumn {
private String name;
private GradeBookColumnType type;
// more methods
}
我想要的远不止这些,但你明白了
现在,在EJB3.2规范中,实体bean被删除并替换为JPA实体。我的问题是如何应对这一悲惨的损失。序列化JPA实体不适合我有三个原因:
那么,在没有实体bean的情况下,我如何设计这个系统来满足这些要求呢?我不确定实体bean的丢失是否真的是悲剧,但这是一个意见问题:) 您的桌面上似乎有一个连接到远程服务器的富客户端。您有两个选择: A.在客户端和服务器之间交换“”对象图。客户端接收一些数据,对其进行修改,然后将其发送回。然后,服务器“”会删除它接收的数据。加载数据时,服务器上有一个事务,合并回数据时有一个事务。为了确保没有冲突,可以对数据进行版本设置 B.你用一个“。在这种情况下,客户端接收到仍然“附加”到会话的实体。对客户端实体的修改将被缓存,并在您调用服务器上的方法时同步 因此,关于您面临的三个设计问题,以下是我的看法:
第三种选择是回归传统,以优化性能。在这种情况下,JPA实体只保留在服务器端。您只将真正需要的数据子集传输到DTO中,而不是传输JPA实体。缺点是DTO将大量增加,您将拥有样板代码从JPA实体创建DTO,并从DTO更新JPA实体 我不太明白这是如何满足安全要求的。@tbodt如果您不信任用户,请在业务级别的客户端应用程序中实现安全性;如果您不信任客户端应用程序本身,那么我担心您只剩下选项3,以确保您仅通过网络传输授权数据。