0

私は2つのデータベースを持っています。1つ目は当社のERPのデータベースで、2つ目は私のアプリのデータベースです。

ERPデータベースから同期された顧客テーブルデータを使用してアプリで作業する必要があります。今、私はクォーツジョブで1時間ごとにテーブルを同期します。このようにして、ローカルのCustomerテーブルがあり、注文に外部キー列を作成するのに問題はありません。

将来的には、新しいアプリを開発する場合、この戦略は良い解決策にはなりません(現在はそうだと仮定します)。このように動作するすべてのアプリについて、顧客テーブルのローカルコピーと同期手順を用意します。

そこで、顧客を獲得するために、リモートインターフェースを備えたスプリングリモーティングを備えたリモートサポートアプリケーションを実装することを考えています。このリモートアプリケーションはERPデータベースに接続されており、すべてのアプリがリモートサービスを呼び出してデータを取得します。

今私の質問は:

  1. それは良いアプローチでしょうか、それともこれを実装するためのより良い方法がありますか?

  2. 注文で顧客エンティティを参照する方法は?このソリューションに従うと、ローカルのCustomerテーブルがなくなります。ドメインクラスで実行できると思います。

    @Entity
    public class Order{
    
        ....
    
        private Integer customerId; 
    
        @Transient 
        private Customer customer;
    
        ...
    } 
    

    リモートサービスを呼び出してOrderオブジェクトをロードするたびに、一時的なCustomerをバインドします。たとえば、私のOrderServiceImplでは

    @Transactional
    public Order getOrder(Integer id){
        Order order = orderDao.get(id);
        order.setCustomer(customerRemoteService.getCustomerById(order.getCustomerId()));
        return order;
    }
    

コメントやより良い解決策を教えていただけませんか。

どうもありがとうございます!!!!!マルコ

4

1 に答える 1

1

ERPデータベースに直接アクセスできますか、それとも別のアプリを投げる必要がありますか?

データベースに直接アクセスできる場合は、EclipseLinkのComposite Persistence Unitサポートを使用して、エンティティを複数のデータベースにマップできます。

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Composite_Persistence_Units

于 2012-11-20T13:42:46.010 に答える