假设客户在我们的系统上下订单的情况。因此,为简单起见,我们有2个实体:
DECLARE @string varchar(20)
SET @string = 'Hello World'
SELECT CONVERT(varbinary, @string)
我们有一个REST服务,用于保存/更新客户,还有一个REST服务,用于发布订单。
实际上,在JPA中,Customer
- CustomerID
- Name
Order
- Customer
- OrderID
- OrderValue
实体与Order
实体具有ManyToOne
关系。因此,假设我没有使用Customer
,那么我至少需要调用DTO
这样的OrderService
:
JSON
而且,当我将订单退还给RestClient时,所有{
"customer": {
"customer_id": 10
},
"order_id": 40,
"order_value": 200.1
}
都将被退回,因为它是在处理过程中加载的。
因此,在考虑有许多“嵌套”实体的复杂系统上,可以接受(或至少不是不好的做法)创建仅引用键而不是对象的实体本身?像这样:
Customer
我是JPA / Hibernate的新手,我来自一个世界,那里的所有实体都是从数据库手动加载的。因此,在处理订单时,我们通常只加载Order
- CustomerID
- OrderID
- OrderValue
而不是所有客户数据。在这里,在此示例中,我认为我有两个选择:加载所有Customer(使用FetchType.EAGER或不加载任何内容(使用FetchType.LAZY)),因此,没有办法(至少我知道)返回到RESTClient一个仅包含其CustomerID的Order对象(至少,无需手动设置order.customer.customer_id,这听起来有点怪异)。
非常感谢!