当前位置: 首页 > 面试题库 >

我应该在休息请求和/或响应中使用jpa实体吗

逑禄
2023-03-14
问题内容

我有一种情况,我可以将JPA实体作为休息请求发送和/或获取JPA实体作为休息响应

@RequestMapping(value = "/products", method = RequestMethod.POST)
public @ResponseBody ProductDetailsResponse createNewProduct(@RequestBody ProductDetails newProduct)
        throws Exception {

ProductDetails 是一个实体

@Entity
@Table(name = "product")
public class ProductDetails {

我应该使用它,还是从实体到另一种对象进行某种转换


问题答案:

没有硬性规定可以将JPA实体用作DTO(数据传输对象),但这不是一个好习惯(出于很好的理由和观点)。

除了DTO在规模上是实体的轻量级版本之外,还有其他优点。

我意识到的这样的优势之一就是关系的版本更浅,例如对于一对多单向关系,您的子实体也将引用您的父实体,但是您可以在DTO中断开该链,因此避免了很多JSON转换和无限循环相关问题。

我发现在DTO级别比从实体级别更容易进行JSON到Object的转换(反之亦然),因为实体表示数据库图而不是客户端业务图。

一个简单的通用实用程序类进行转换(从DTO到Entity,反之亦然)就足够了。您可以按照此处所述使用模型映射器API 。

我不让实体跨越服务层边界,它的所有DTO都在控制器上,而我不在控制器上进行转换。

附加的样板代码是DTO方法的一个缺点。



 类似资料:
  • 问题内容: 我想检查实体是否在另一个实体的Collection成员中(或): 问题答案: 不必要。共有三个选项: 不要覆盖-因此您将使用实例。当您使用仅附加到会话的实体(因此保证是同一实例)的集合时,这很好。在许多情况下,这(对我而言)是首选方式,因为在覆盖时它需要较少的代码和较少的考虑 覆盖并带有业务密钥。那可能是识别实体的属性的子集。例如,对于一个好的企业密钥,可能是或。这被认为是好的做法。

  • 由于请求的不同用法和注释,我一直很困惑

  • 请找到我们需要实现的用例。 首先,我们需要调用Kafka生产者将消息作为rest服务,他们将在另一个主题中处理并返回响应。 对于我们来说,这是一个请求-回复主题,我们需要回复相同的请求-响应,使用replykafka模板工作正常,但我们可以在标题中设置相关id。 作为主题消息元数据,存在发送属性,是否有任何方法将关联id映射到请求主题消息和回复主题消息。 给你好好解释一下。 一个微服务期望负载如下

  • 我正在尝试创建一个使用在我的数据库中创建新对象的REST API。我正在使用Slim框架。 问题是我不确定在我的< code>POST方法的这些行中到底应该放些什么: 我的完整路由是: 在表< code>cars中有对象< code>Car。 我应该这样说吗?: 我有点困惑,因为在我之前看到的教程中,在方法中,他们没有任何对路由中变量名称的引用。例如,如果他们使用,他们没有在其路由中声明任何名为的

  • 我想通过REST API(最好使用Python或Java)发出请求。然而,我想过滤掉结果,因为我不想从响应中得到所有信息。例如,我只需要文本。作为初学者,我很难取得成功。到目前为止,我只在Python上用库“requests”完成了一个请求。有人能帮我吗?

  • 我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助: 编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。