小编Bat*_*nov的帖子

JPA实体和/与DTO

在这些情况下,帮助决定何时使用DTO以及何时使用实体的一般想法是什么?

  1. UI /服务器端java调用服务.它应该获得/发送实体或DTO吗?
  2. 调用服务的Web服务.服务是否应接受实体或DTO?

我喜欢阅读传递实体的代码:

  1. 更简单的传递,不需要映射到DTO
  2. 不需要额外的课程
  3. 已经定义了与其他实体的关系,因此不需要将相关的DTO组合到一个DTO中
  4. 只是POJO

但是有关于DTO映射到实体的论点更安全,因为它是一个契约,实体可以改变为任何形式,并且DTO将保持不变.例如,类似于实体具有字段名称,并且DTO也具有字段名称.稍后,如果需求更改,数据库表发生更改,实体也可以更改,将名称更改为firstName和lastName.但是DTO仍然会有一个字段名,即firstName + lastName.

所以这里是使用DTO的优点列表:

  1. 从接受DTO的代码的角度向后兼容

我能想到的DTO的缺点是:

  1. 必须定义DTO类和映射(可能使用推土机)
  2. 程序员必须分析何时使用DTO和实体,我的意思是为每个方法传递DTO都是一团糟
  3. 将实体转换为DTO的开销,反之亦然
  4. 我仍然不确定如何映射它们的一对多关系.在JPA中我们可以懒惰地初始化它,但是当传入DTO时,我应该初始化这个与否.很快,DTO不能使用惰性初始化代理,只包含值.

请分享你的想法..

谢谢 !

以下是来自不同地方的一些报价

:

将实体类重用为DTO似乎很麻烦.该类的公共API(包括公共方法的注释)不再明确定义它所呈现的合同的目的.该类最终将使用仅在将类用作DTO时才相关的方法,以及仅在将类用作实体时才相关的一些方法.关注点不会完全分开,事情会更紧密地结合在一起.对我而言,这是一个更重要的设计考虑因素,然后尝试节省创建的类文件的数量.

亲实体:

绝对不!!!

JPA实体映射到数据库,但它们不与数据库"绑定".如果数据库发生更改,则更改映射,而不是对象.对象保持不变.这就是重点!

architecture jsf jpa dto

22
推荐指数
1
解决办法
8685
查看次数

如何从Pl/SQL写入文本文件,PLS错误00363

我试图从一个过程写入一个文件:

out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

  Utl_File.Put_Line(out_file , 'Hi this is text file!');
  Utl_File.FClose(out_file);
Run Code Online (Sandbox Code Playgroud)

PACKAGE xxxxxxxx的编译错误

Error: PLS-00363: âûðàæåíèå 'OUT_FILE' íå ì.á. èñïîëüçîâàíî êàê àäðåñàò íàçíà÷åíèÿ
Line: 795
Text: out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

Error: PL/SQL: Statement ignored
Line: 795
Text: out_File := Utl_File.FOpen('C:\test', 'batotest.txt' , 'W');

Error: PLS-00363: 'OUT_FILE' íå ì.á. èñïîëüçîâàíî êàê àäðåñàò íàçíà÷åíèÿ
Line: 797
Text: Utl_File.FClose(out_file);

Error: PL/SQL: Statement ignored
Line: 797
Text: Utl_File.FClose(out_file);
Run Code Online (Sandbox Code Playgroud)

所以这是我的代码,它给了我这个错误,有什么问题?

oracle plsql utl-file

11
推荐指数
1
解决办法
5万
查看次数

如何在Spring Boot应用程序中创建SOAP over JMS?

有很棒的教程可以在Spring启动时启用JMS,还有一些教程可以创建SOAP的提供者和使用者.

有人可以提供有关如何将JMS指定为SOAP传输协议的分步说明以及JMS实现的位置.

是:(SOAP + JMS)服务器与客户端服务器,还是客户端 - > jms - > soap服务器?

请解释如何创建一个工作示例.

java spring soap web-services spring-boot

6
推荐指数
0
解决办法
630
查看次数

Spring DI 同时有两个构造函数

这是一种反模式,但我很好奇实际会发生什么。

如果显式定义一个无参数构造函数和一个带自动装配参数的构造函数,spring框架将如何初始化它?

@Service
class Clazz {

    private MyBean myBean;

    public Clazz(){}

    @Autowired
    public Clazz(MyBean myBean){
        this.myBean = myBean;
    }
}
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection javabeans multiple-constructors

4
推荐指数
1
解决办法
5766
查看次数

自上次成功构建以来,如何使用 Groovy 获取有关 Jenkins 的提交信息?

如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据?

git version-control groovy jenkins

1
推荐指数
1
解决办法
5173
查看次数

自由char*,当作为C中的空格传递时

我有这个功能

void clean_strs(void *p){
    if (!p){
        printf("Clean str ptr that is NULL !!\n");
        fflush(stdout);
        return;
    }
    char *a = (char*)p;
    free(a);
    a = NULL;
}
Run Code Online (Sandbox Code Playgroud)

并传入这样的指针:

char *a = malloc(4*sizeof(char));
// check if memory was allocated
if(a) {
    a = "asd\0";
    clean_strs(a);
    a = NULL;
    if(a) {
        getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果信号SIGABORT.有人可以解释为什么铸造和释放动态分配的指针是一个错误?

c pointers casting char

0
推荐指数
1
解决办法
457
查看次数