Hibernate 将部分数据映射回域对象

Hibernate 将部分数据映射回域对象,hibernate,mapping,dns,dto,Hibernate,Mapping,Dns,Dto,我们有一个flex客户端,我们将DTO发送给对象。 这是因为我们的域对象包含大量数据,而客户机主要只查看一小部分数据 我们更喜欢DTO而不是延迟加载,因为许多域对象包含我们不想发送给客户端的数据(字符串) 当我们在客户端上对进行更改时,我们会将DTO发送回服务器 我想知道在域对象上应用这些更改的最佳实践,并让hibernate保存它 我应该先读取域对象,然后将值从DTO复制到域对象吗 是否有一个API可以帮助我实现这一点,这样我就不必为我的所有域对象创建映射器?使用hibernate时,最好使用

我们有一个flex客户端,我们将DTO发送给对象。 这是因为我们的域对象包含大量数据,而客户机主要只查看一小部分数据

我们更喜欢DTO而不是延迟加载,因为许多域对象包含我们不想发送给客户端的数据(字符串)

当我们在客户端上对进行更改时,我们会将DTO发送回服务器

我想知道在域对象上应用这些更改的最佳实践,并让hibernate保存它

我应该先读取域对象,然后将值从DTO复制到域对象吗


是否有一个API可以帮助我实现这一点,这样我就不必为我的所有域对象创建映射器?

使用hibernate时,最好使用
DTO
作为
Bean
,这也应该映射到DB中的
表。阅读有关hibernate中映射的更多信息。如果您使用的是旧数据库,则可能会发生变化

假设我有2个bean
用户
地址
。这些将映射到支持表
tUsers
tadresses
。这是您在hibernate中使用的典型调用结构。您可以调用
User
Address
class aBean

现在,假设我需要一个
DTO
,它的数据将从多个表的查询中填充,并且它没有支持表。对于数据传输,需要填写
DTO
,而不是使用Bean


我的定义是有争议的,但我觉得第一种方法(使用Bean)是好的,不管您称之为
DTO
Bean
,当您得到DTO时,您从数据库加载相应的对象,并根据DTO的状态更新它们。Hibernate将负责更改跟踪,因此只有更改的实体才会保存回数据库

您希望在代码中执行此操作的原因是在应用更改时应用的附加逻辑和验证。比如说

  • UserDTO有用户名显示在UI上,但您不想轻易更改,对吗
  • 始终验证用户输入,来自导线的DTO即为用户输入

感谢您的回复,我将查看您发送的链接。我不太明白你说的DTO应该是一个bean并存储在DB中是什么意思。我为什么要在数据库中存储DTO?谢谢,我明白你的意思。但transformer不是用来创建可以发送到客户端的DTO对象吗?我的问题是我需要更新数据库。客户端正在向我发送一个包含已更改字段的DTO。我现在需要从数据库中读取原始对象,然后映射更改的字段并进行更新。