オンライン学習用の Java EE アプリを作成したいと考えています。私はこのデータ表現を考えています:
@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
}
それだけではありませんが、要点はわかります。
現在、EJB 3.2 仕様では、エンティティ Bean が削除され、JPA エンティティに置き換えられています。私の質問は、この悲劇的な喪失にどう対処するかです。シリアル化された JPA エンティティが機能しない理由は 3 つあります。
- パフォーマンス。エンティティ全体とそのすべてのデータをネット経由でプッシュする必要があります。そのデータは非常に多く、すべてを処理するには許容できないほど長い時間がかかる可能性があります。
- 安全。エンティティ内のすべてのデータがネット経由で転送される場合、そのデータをダウンロードしたプログラムからすべてのデータにアクセスできます。ただし、ユーザーが十分な権限を持っている場合にのみ、特定のデータにアクセスできるようにしたいと考えています。
- 書き込みアクセス。データのコピーがダウンロードされると、クライアントはそれを変更できるようになります。ただし、変更が行われた場合、それらはサーバーに永続化されません。もちろん、エンティティを永続化するためにいつでもサーバーに送り返すこともできますが、すべてのデータをさらに遅いアップストリーム接続を介して送信する必要があります。
では、エンティティ Bean を使用せずにこれらの要件を満たすようにこのシステムを設計するにはどうすればよいでしょうか。