私は2つのデータベースを持っています。1つ目は当社のERPのデータベースで、2つ目は私のアプリのデータベースです。
ERPデータベースから同期された顧客テーブルデータを使用してアプリで作業する必要があります。今、私はクォーツジョブで1時間ごとにテーブルを同期します。このようにして、ローカルのCustomerテーブルがあり、注文に外部キー列を作成するのに問題はありません。
将来的には、新しいアプリを開発する場合、この戦略は良い解決策にはなりません(現在はそうだと仮定します)。このように動作するすべてのアプリについて、顧客テーブルのローカルコピーと同期手順を用意します。
そこで、顧客を獲得するために、リモートインターフェースを備えたスプリングリモーティングを備えたリモートサポートアプリケーションを実装することを考えています。このリモートアプリケーションはERPデータベースに接続されており、すべてのアプリがリモートサービスを呼び出してデータを取得します。
今私の質問は:
それは良いアプローチでしょうか、それともこれを実装するためのより良い方法がありますか?
注文で顧客エンティティを参照する方法は?このソリューションに従うと、ローカルの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; }
コメントやより良い解決策を教えていただけませんか。
どうもありがとうございます!!!!!マルコ