如何在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;
}
第二种选择是更清洁,更容易重复使用和维护,但会对如何构建它进行一些研究。