- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个启用了 spring 和 hibernate 的 Web 应用程序
我有一个用户注册类:
public class SignUpDto {
@NotBlank
@Length(min = 1, max = 50)
private String firstName;
@NotBlank
@Length(min = 1, max = 50)
private String lastName;
@NotBlank
@Length(min = 1, max = 100)
@Email
private String email;
@NotBlank
@Length(min = 8, max = 15)
private String password;
@NotBlank
@Length(min = 8, max = 15)
private String confirmPassword;
@NotBlank
@Length(min = 10, max = 12)
@Phone
private String phone;
@NotNull
private UserType userType;
....
和相应的 hibernate 实体对象是:
@Entity
@Table(name = "user")
public class UserEo extends BaseEo {
private static final long serialVersionUID = 1L;
public UserEo() {
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "use_id")
private Long id;
@Column(name = "use_title")
private String title;
@Column(name = "use_name")
private String name;
@Column(name = "use_email")
private String email;
@Column(name = "use_password")
private String password;
@Column(name = "use_type")
private String type;
@Column(name = "use_registered")
private Timestamp registered;
@Column(name = "use_phone")
private String phone;
...
所以我担心的是代码字段/setters/getters 在 DTO 和 EO 中被重复,这违反了 DRY 原则
有什么解决这个问题的建议吗?
谢谢苏雷什
最佳答案
这是使用 DTO 模式时的常见问题,简短的回答是,在您的特定情况下,您可以做的事情不多(有什么?)。现在为更长的答案:
DTO 模式做了两件事 - 一是将您的 API(例如 REST/SOAP API)与您的实现分离。其次,它允许您仅传输消费者所需的信息,而不管您的实现如何。域模型也可以作为构建 DTO 的一部分进行操作。
您的实现具有这两个优点,即使底层实现(您的数据库表)发生变化,您也可以更轻松地维护您的 API 接口(interface)。
一种天真的方法是将实体对象也用作 DTO。这通常是行不通的,因为它违反了上述原则。如果实体利用延迟加载,技术上也有难度。
关于java - 具有 DTO 和 EO 的 DRY 原则,用于启用 spring 和 hibernate 的 webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096388/
这个问题已经有答案了: Can a shell script set environment variables of the calling shell? [duplicate] (20 个回答)
我想用 Python 为 eOS Luna 上的万神殿面板制作一个简单的小程序。我找不到任何有关 API 的文档。在一些论坛上有人建议我应该使用与 Gnome 或 Unity 相同的过程。然而,我尝试
如果您将输入编码为 std::istream_iterator ii(std::cin); std::istream_iterator eos; std::for_each(ii,eos,record
尝试即时切换输出文件,但无法处理 EOS。 http://gstreamer-devel.966125.n4.nabble.com/Dynamically-updating-filesink-loca
我正在尝试从包含非常大数据的表中获取数据。我正在使用 Java Webobject 和 EOmodel。当我尝试使用索引列获取时,我能够在不到 2 秒的时间内获得结果。但是当我尝试使用任何其他列进行搜
我们正在使用 EO.pdf 16,我们有 body 标签的 css body { background-image: url(../images/background.jpg); background
我在窗口内使用 EO webView 来加载 HTML 页面。即使我在页面中使用以下内容,页面似乎也会缓存。如何确保每次加载页面时都进行硬刷新? 我在 Windows 窗体中为“PageRefresh
我正在用另一个文件中的音乐替换我的视频的音轨。所以我修改了标准ExtractDecodeEditEncodeTest代码(来自 bigflake)以便音频 MediaExtractor是从所说的“另一
我正在尝试使用 GStreamer 1.8.2 和 Python 3.5 创建一个动态管道。目标是能够播放一些视频并在 EOS 上更改它,以类似于使用 about-to-finish of playb
在这个函数中,我该怎么做才能让父级停止尝试从管道读取数据。 IE。如果我运行命令 ls | grep test grep不会输出test和test.c然后等待用户输入? pipe(pipefd); i
我开始全神贯注于转换器架构,但有些事情我还无法掌握。 在无解码器的转换器中,例如 BERT,标记器总是在句子前后包含标记 CLS 和 SEP。我知道 CLS 既充当 BOS 又充当提供分类信息的单个隐
我正在尝试在 vm(使用 vmware 工作站)上运行的 Arista 交换机中配置以太网接口(interface)。我能够根据给定的用户 guid 配置管理接口(interface),但是在使用相同
我写了一个v4l2src同时显示和录制的代码。我的管道看起来像: / [queue] ! [videosink] v4l2src ! tee !
我正在寻找一种能够从 delphi 控制我的佳能或尼康相机的方法,基本上我需要找到一种方法来在相机与 USB 连接时接收新图像,即检测何时拍摄新照片,以便我可以在我的应用程序中采取措施,例如裁剪图像、
我正在尝试使用 gstreamer 从源中获取多个快照。使用以下代码,我成功获取了 9 个文件,但从源中获取了 EOS(这实际上是正常的,这是由 num-buffers 参数引起的): #includ
我们正在使用佳能eos sdk 2.14 进行直播和拍摄。相机是佳能1200D 以下是相机设置: 直播模式:启用 自动对焦模式:灵活 下面是代码 import java.awt.image.Buffe
我想从 Deleted 项目中的 Recoverable 项目文件夹中获取事件。 我们是否支持 rest API 来访问可恢复文件夹中的这些邮件/日历/联系人? 我找不到任何关于它的文章,也没有在 o
当我运行我的模拟器设备时,我得到了模拟器的输出,但我收到了以下错误: java.io.IOException: EOF at com.android.ddmlib.AdbHelper.read
谁能帮我解析这个输出以显示总分钟数? 这是命令(除格式化外按预期工作): ps -eo pid,etime,command | grep some_process | grep -v grep | a
我正在尝试使用 EOS CDT(合约开发工具包)。 我已经从 github 下载并安装了存储库,并习惯于按照 eos.io 开发页面上的指示执行以下命令。 https://developers.eos
我是一名优秀的程序员,十分优秀!