在这些情况下,帮助决定何时使用DTO以及何时使用实体的一般想法是什么?
我喜欢阅读传递实体的代码:
但是有关于DTO映射到实体的论点更安全,因为它是一个契约,实体可以改变为任何形式,并且DTO将保持不变.例如,类似于实体具有字段名称,并且DTO也具有字段名称.稍后,如果需求更改,数据库表发生更改,实体也可以更改,将名称更改为firstName和lastName.但是DTO仍然会有一个字段名,即firstName + lastName.
所以这里是使用DTO的优点列表:
我能想到的DTO的缺点是:
请分享你的想法..
谢谢 !
以下是来自不同地方的一些报价
亲:
将实体类重用为DTO似乎很麻烦.该类的公共API(包括公共方法的注释)不再明确定义它所呈现的合同的目的.该类最终将使用仅在将类用作DTO时才相关的方法,以及仅在将类用作实体时才相关的一些方法.关注点不会完全分开,事情会更紧密地结合在一起.对我而言,这是一个更重要的设计考虑因素,然后尝试节省创建的类文件的数量.
亲实体:
绝对不!!!
JPA实体映射到数据库,但它们不与数据库"绑定".如果数据库发生更改,则更改映射,而不是对象.对象保持不变.这就是重点!
我试图从一个过程写入一个文件:
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)
所以这是我的代码,它给了我这个错误,有什么问题?
有很棒的教程可以在Spring启动时启用JMS,还有一些教程可以创建SOAP的提供者和使用者.
有人可以提供有关如何将JMS指定为SOAP传输协议的分步说明以及JMS实现的位置.
是:(SOAP + JMS)服务器与客户端服务器,还是客户端 - > jms - > soap服务器?
请解释如何创建一个工作示例.
这是一种反模式,但我很好奇实际会发生什么。
如果显式定义一个无参数构造函数和一个带自动装配参数的构造函数,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
如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据?
我有这个功能
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.有人可以解释为什么铸造和释放动态分配的指针是一个错误?