0

我有 2 个数据库。第一个是我们公司 ERP 的数据库,第二个是我的应用程序的数据库。

我需要在我的应用程序中使用来自 ERP 数据库的同步客户表数据。现在我每小时用石英作业同步表格。通过这种方式,我有一个本地客户表,并且在我的订单中创建外键列没有问题。

未来,开发新的应用程序,这种策略不会是一个好的解决方案(假设是现在..)。对于以这种方式工作的每个应用程序,我将拥有客户表的本地副本和同步过程。

因此,我正在考虑使用带有远程接口的 spring-remoting 来实现远程支持应用程序,以吸引客户。这个远程应用程序连接到 ERP 数据库,我所有的应用程序都会调用远程服务来获取数据。

现在我的问题是:

  1. 这可能是一个好方法还是有更好的方法来实现它?

  2. 如何在我的订单中引用客户实体?按照这个解决方案,我不再有本地客户表了。我想我可以在域类中做:

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

    并在每次我通过调用远程服务加载 Order 对象时绑定瞬态客户。所以例如在我的 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 回答