現在、Java-EE6(GlassFish 3.1.2、MySQL Server 5.1、Netbeans 7.1.1)を使用した3層アプリケーションを開発中です。Java-EE6:階層間で@Entityを渡す方法を設計するには?
プロジェクトは現在、3つのプロジェクトで構成されています
- エンタープライズアプリケーション/ EJBの:データベース
- Javaクラス・ライブラリのエンティティを制御するために、ファサード:データベースモデル(このプロジェクトを表す@Entity注釈付きクラスサーバリソースのJNDIルックアップ(EJBのリモートアクセス)
エンティティの作成/変更/削除時にクライアントのGUIを更新するために、各クライアントが起動時にサブスクライブし、EJBコンテナ上のメッセージ駆動型Beanがパブリッシャとして機能するトピックを実装することによってJMSを使用することにしました。
今、私は、次の大きな課題に直面:
- を私は、サブスクライブしているクライアントに更新メッセージを発行する必要があり、エンティティオブジェクトへのライフサイクルリスナー(@PostUpdateなど)を添付しました。エンティティクラスはclass-libプロジェクトにありますが、パブリッシャはEE-appにあります。問題は、EE-appがclass-libプロジェクトを参照することですが、その逆もありません(循環プロジェクト参照は許可されないため)。したがって、エンティティクラスのライフサイクルコールバックメソッドには、EE-appのメッセージ駆動型パブリッシャBeanに関する参照がありません。
これは、Java-EE6で3層アプリケーションを設計するのが基本的に正しいアプローチであるかどうかをより詳細にデザインする質問&ですか?
私はできるだけ複雑さを低く抑えるために、可能な限りDTO/DAOを避けたいと思っています。アプリケーションは、大量のネットワークトラフィックを生成しません。
事前にアドバイスをいただきありがとうございます。
EJBサーバーのコンテキストから@Entitiesをシッククライアントに送信することを意味しますか?これらのエンティティは、関係がプロキシであるため直列化できません。どのようにDTOなしでこの作業を行うことができますか? – edutesoy