来自不同Rest Services的两个模型之间的JPA链接

时间:2016-08-23 15:55:45

标签: java rest jpa

如何在JPA模型中完成两个Rest服务之间的链接? 假设我有一个包含所有用户相关API的用户服务和一个购物车服务,该服务在购物车模型中包含用户ID。这两个Rest Services分为两个不同的应用程序,它们不共享数据库和持久性模型。

我想到了两个选择:

1选项 - 在服务中加载用户 此选项将在Cart模型中添加一个临时用户,该用户将由Cart服务加载。

@Entity
@Table(name="cart")
public class Cart {

    @Column(name="user_id")
    private Long userId;

    @Transient
    private User user;
}

public class CartService {

    public Cart findById(final Integer id) {
        Cart cart = // Find cart by id in local repository
        loadUser(cart);
        return cart;
    }

    private User loadUser(cart) {
        User user = // Rest API call to get User from Service by ID
        cart.setUser(user);
    }
}

2选项 - 自定义注释以加载(如果可能,懒惰)用户: 此选项将提供自定义注释以加载用户。我不知道如何做到这一点,可能使用过滤器或AOP。 使用此选项,我可以将用户ID设为私有,并通过用户集和get方法添加一些操作。

@Entity
@Table(name="cart")
public class Cart {

    @Column(name="user_id")
    private Long userId;

    @UserService(lazy = true)
    @Transient
    private User user;
}

第二种选择是更清洁,更容易重复使用和维护,但会对如何构建它进行一些研究。

0 个答案:

没有答案